変数からコマンド出力をキャプチャするときに改行(\ n)を保持する方法

変数からコマンド出力をキャプチャするときに改行(\ n)を保持する方法

簡単な例として、ソースコードファイルがたくさんあります。これらすべてのファイルの "head"コマンド出力を変数に保存したいと思います。

私は試した:

output=$(head $file)

ただし、\n出力を変数に保存すると、すべての文字が自動的に切り捨てられます。

文字を削除せずにコマンド出力をそのまま保存するにはどうすればよいですか\n

ベストアンサー1

これは「コマンド拡張」の既知のバグ、または$(...)最後`...`の改行が切り捨てられるバグです。

あなたの状況が次の場合:

$ output="$(head -- "$file"; echo x)"     ### capture the text with an x added.
$ output="${output%?}"                    ### remove the last character (the x).

出力値が変更されます。

おすすめ記事