web-dev-qa-db-ja.com

Linuxシェルスクリプトに新しい行を挿入する方法

複数のエコーステートメントの間に新しい行を挿入したいです。私はecho "hello\n"を試しましたが、うまくいきません。 \nを印刷しています。私はこのような希望の出力が欲しいです:

Create the snapshots

Snapshot created
94
user3086014

echoステートメントの間に新しい行を挿入する最も簡単な方法は、引数なしでechoを挿入することです。次に例を示します。

echo Create the snapshots
echo
echo Snapshot created

つまり、引数なしのechoは空白行を出力します。

-eフラグと埋め込み改行文字\nを持つ単一のechoステートメントを使用するもう1つの方法

echo -e "Create the snapshots\n\nSnapshot created"

ただし、-eフラグがすべてのシステムで一貫して機能するわけではないため、これは移植性がありません。あなたが本当にこれをしたいならもっと良い方法はprintfを使うことです:

printf "Create the snapshots\n\nSnapshot created\n"

POSIXに準拠していませんが、これは多くのシステムでより確実に機能します。 printfechoのように自動的に改行を追加しないため、最後に手動で\nを追加する必要があります。

149
janos

このエコーステートメントを使用する

 echo -e "Hai\nHello\nTesting\n"

出力は

Hai
Hello
Testing
56
Kalanidhi
echo $'Create the snapshots\nSnapshot created\n'
18
Ohad Cohen

あなたは printf(1)コマンドを使うことができます。好き

printf "Hello times %d\nHere\n" $[2+3] 

printfコマンドは引数を受け取ることができ、標準のCに似た(厳密には同じではない)フォーマット制御文字列が必要です。 printf(3) 関数...

14