2011-11-16 14 views
7

Ho scritto un piccolo script in bash che analizza i file forniti o lo stdin se non viene fornito alcun file per produrre un output. Qual è il modo migliore per reindirizzare l'output analizzato su stdout (al termine dello script il risultato è memorizzato in una variabile). Dovrei usare cat o echo, o c'è un altro metodo preferito?Script di shell: cat vs echo per l'output

risposta

9

utilizzare il comando printf:

printf '%s\n' "$var" 

echo è ok per i casi semplici, ma può comportarsi in modo strano per certi argomenti. Ad esempio, echo ha un'opzione -n che indica di non stampare una nuova riga. Se $var capita di essere -n, quindi

echo "$var" 

non stampa nulla. E ci sono diverse versioni di echo (incorporate in vari shell o come /bin/echo) con comportamenti leggermente diversi.

+1

+1. questo consiglio dovrebbe essere visto più spesso –

3

echo è un ottimo modo per farlo. Dovrai fare qualche salto se vuoi che il cat funzioni.

3

echo. Hai i tuoi dati analizzati in una variabile, quindi solo echo "$var" dovrebbe andare bene. cat è usato per stampare il contenuto dei file, che non è quello che vuoi qui.

+0

Questo è un punto importante – niagr

Problemi correlati