Sono un po 'confuso con la stampa di una variabile che contiene un nuovo simbolo di linea in bash.bash printf con nuova riga
var="Age:\n20\ncolor:\nred"
echo -e $var
Age:
20
color:
red
Questo è il lavoro, ma un sacco di gente dice che l'eco con le opzioni è not portable e it is better to use printf.
Non ho mai usato prinf. Secondo i manuali per emettere il comando echo:
printf '%s\n' "$var"
Age:\n20\ncoloe:\nred
Ma questo non analizza la variabile all'interno. manuali di solito hanno questo esempio:
printf "Surname: %s\nName: %s\n" "$SURNAME" "$LASTNAME"
ma non è il mio caso e dal mio punto di vista non comodo da usare. Ho scoperto semplicemente digitando che posso usare questo:
printf "$ var \ n"
E 'portatile? Se poi passo $ var a un comando di posta, salverà le nuove interruzioni di riga?
printf "$var\n" | mail -s subj [email protected]
Problemi con 'printf' è che è un guscio integrata su alcune shell (bash e ksh93) ma un processo esterno sugli altri (sh, ksh88, csh) . Quindi usare 'printf' su vecchie shell potrebbe rallentare il tuo programma, a seconda di quante volte lo usi. – cdarke