エコー出力の間に空白行を置くには?

エコー出力の間に空白行を置くには?

bashスクリプトを実行し、各エコーの間にスペースを入れたいです。現在私はそうします:

#!/bin/bash
echo
echo 'foo'
echo
echo 'bar'

出力

foo

bar

しかし、それほど専門的ではないようです。このようにしてみましたが、最初の行のスペースが倍増します。

echo -e '\n'
echo -e 'foo\n'
echo -e 'bar\n'

最初の行を変更するには、次のように入力します。

echo -e ''

別の方法がありますか?

答え1

フォーマットされた出力が必要な場合は幸運かもしれませんprintf

$ printf "\n%s\n\n%s\n" "foo" "bar"

foo

bar
$

私はこれをC関数と考える傾向がありますが、printf以下の説明で@freddyが提案したように、次のように単純化できます。

$ printf "\n%s\n" "foo" "bar"

foo

bar

man zshbuiltinsしかしこれは実装では一般的だと思います):

If arguments remain unused after formatting, the format string
is reused until all arguments have been consumed.

答え2

echo -e "\nfoo"
echo -e "\nbar"

答え3

#function out() {
#    echo
#    echo $*
#}

# or

function out() {
    echo -e '\n'"$*"
}

out foo
out bar

この回答を他の関連する回答と組み合わせることも検討してくださいprintf

関連情報