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

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

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.

おすすめ記事