次のコマンドを使用して、git を使用して 2 つのコミットから変更されたファイルのリストをエクスポートしようとしています。
read -ra ADDR <<< `git diff --name-only HEAD..HEAD~1 | sed -e "s/ /\\\ /g"`
for i in "${ADDR[@]}"; do
echo "$i"
done
これはうまくいきます。各ファイルが新しい行にある素敵なリストが端末に出力されます。
file1.txt
file2.txt
file3.txt
--name-status
ただし、代わりに使用したい--name-only
。その理由は、変更の種類 (M または D など) に応じて、後で別のことを実行できるようにするためです。
しかし、これはうまくいきません。次の形式でリストを取得します。
M
file1.txt
M
file2.txt
M
file3.txt
IFS
変数を$'\n'
(1 行ですべてを返す)、$'\t'
(最初の行を返す、たとえばM file1.txt
) および' '
(と同じ)に変更しようとしましたが、\t
成功しませんでした。