bash:関数内で改行を使用するか、使用せずに印刷しますか?

bash:関数内で改行を使用するか、使用せずに印刷しますか?

最も安全なオプションは、改行なしで結果を印刷することです。これは、次のスクリプトのように、入力を行で区切る必要がない他のコマンドにコマンドをパイプするときに問題が発生する可能性があるためです。

function test_nl {
    echo result
}

function test_no_nl {
    printf %s result
}

test_nl | xxd -p | wc -c
#prints 15
test_no_nl | xxd -p | wc -c
#prints 13

test_nlメソッドが良い状況がありますか?

ベストアンサー1

頼る。上記のように出力が正確に何であるかを常に確認したい場合は、改行は面倒かもしれませxxdん。ただし、一般的な用途ではuname、基本的にそのようなユーティリティを検討してくださいuptimedateする末尾の改行を印刷します。これは確かに習慣です。コマンドラインで実行されているプログラムが末尾の改行を印刷しない場合、多くのシェルは同じ行にプロンプ​​トを印刷します(以下を参照)。さらに、たとえば、コマンド置換はそれを補うために末尾の改行を削除します。

bash$ date -u | tr -d '\n' 
Sat 14 Nov 2020 03:48:19 PM UTCbash$ 

おすすめ記事