次の行は作成しますfile_c-6.txtが出力します5:
$ i=5; ls file_a-${i}.txt file_b-${i}.txt > file_c-$(( ++i )).txt; echo $i
5
$ cat file_c-6.txt
file_a-5.txt
file_b-5.txt
削除>すると、リストされfile_c-6.txtて出力されます5:
i最初の例の価値を維持できない理由を理解できません。
$ i=5; ls file_a-${i}.txt file_b-${i}.txt file_c-$(( ++i )).txt; echo $i
file_a-5.txt file_b-5.txt file_c-6.txt
6
4
それは奇妙です。
—
グレンジャックマン
の
—
チョロバ
echo代わりに使用するとls、両方のケースで2番目の方法で動作します。
/bin/echoは違いを保持するため、外部コマンドの出力リダイレクトはサブシェルで発生するようです。
bug-bash@gnu.orgに間違いなくバグ報告する価値があります。現在開発中の4.4では修正されていません。
—
chepner