bash printf mit new line

Ich bin ein wenig verwirrt mit dem Druck eine variable, die enthält eine neue Zeile symbol in der bash.

var="Age:\n20\ncolor:\nred"
echo -e $var
Age:
20
color:
red

Dies ist Arbeit, aber eine Menge Leute sagen, dass das echo mit Optionen ist nicht tragbar und besser ist die Verwendung von printf ().

Ich nie benutzt prinf. Laut den Handbüchern emitate echo-Befehl:

printf '%s\n' "$var"
Age:\n20\ncoloe:\nred

Aber nicht Parsen \n innere variable. Handbücher haben in der Regel dieses Beispiel:

printf "Surname: %s\nName: %s\n" "$SURNAME" "$LASTNAME"

Aber es ist nicht mein Fall und aus meiner Sicht nicht komfortabel zu bedienen. Ich fand heraus, einfach durch die Eingabe, dass ich diese:

printf "$var\n"

Ist es portabel?
Wenn ich mich dann übergeben, $var zu einem mail-Befehl wird das speichern neuer Zeilenumbrüche?

printf "$var\n" | mail -s subj email@domain.com 
  • Problem mit printf ist, dass es ein shell-built-in auf einige shells (bash und ksh93) aber ein externer Prozess auf andere (sh, ksh88, csh). Also mit printf auf älteren Muscheln dämpfen könnten-bis Sie das Programm, je nachdem, wie viele Male Sie es verwenden.
InformationsquelleAutor idobr | 2013-03-22
Schreibe einen Kommentar