私は、bashに新しい行シンボルを含む変数を表示するのとちょっと混乱しています。bash printf with new line
var="Age:\n20\ncolor:\nred"
echo -e $var
Age:
20
color:
red
これは働いているが、多くの人々は、オプションでエコーするnot portableとit is better to use printfであると言います。
私はprinfを一度も使用しませんでした。 echoコマンドを発行するマニュアルに従って:
printf '%s\n' "$var"
Age:\n20\ncoloe:\nred
しかし、変数内で\ nを解析しません。
printf "Surname: %s\nName: %s\n" "$SURNAME" "$LASTNAME"
しかし、それは使用すること慣れていない私の場合ではありませんし、私の視点から:マニュアルは通常、この例を持っています。
のprintf "$するvar \ n" は
それは移植性がある:私は単に私がこれを使用することができることを次のように入力して分かりましたか? $ varをメールコマンドに渡すと、新しい改行が保存されますか?
printf "$var\n" | mail -s subj [email protected]
printf' 'の問題は、組み込みの一部のシェル(bashのとは、ksh93)上にシェルが、他の外部プロセス(SH、ksh88では、CSH)であることです。古いシェルで 'printf'を使うと、何回使ったかによってプログラムが遅くなる可能性があります。 – cdarke