Jestem trochę zdezorientowany, drukując zmienną, która zawiera nowy symbol linii w bashu.bash printf z nową linią
var="Age:\n20\ncolor:\nred"
echo -e $var
Age:
20
color:
red
To działa, ale wiele osób twierdzi, że echo z opcji jest not portable i it is better to use printf.
Nigdy nie użyłem prinf. Zgodnie z instrukcjami do emulacji polecenia echo:
printf '%s\n' "$var"
Age:\n20\ncoloe:\nred
Ale to nie parsuje \ n zmiennej wewnętrznej. instrukcje zazwyczaj mają ten przykład:
printf "Surname: %s\nName: %s\n" "$SURNAME" "$LASTNAME"
Ale nie jest to mój przypadek iz mojego punktu widzenia nie jest wygodny w użyciu. I okazało się, że po prostu przez wpisanie mogę użyć tego:
printf "$ var \ n"
Czy to przenośny? Jeśli następnie przekażę $ var komendę mail, czy zapisze on nowe podziały wierszy?
printf "$var\n" | mail -s subj [email protected]
problem z 'printf' jest to, że powłoka wbudowane w niektórych muszli (bash i ksh93), ale proces zewnętrznego na innych (sh, ksh88, csh) . Zatem użycie 'printf' na starszych powłokach może spowolnić twój program, w zależności od tego ile razy go użyjesz. – cdarke