command | awk '{ print $1; }' | while read val ; do
コマンド出力をループするために使用します。最近、合計を計算したいと思っていたのですが、次のような奇妙な動作を発見しましたbash
。
test.txt の内容
100
200
300
test.sh の内容
sum='0'
cat test.txt | awk '{ print $1; }' | while read val ; do
sum=`expr $sum + $val`
echo "sum is now: $sum"
done
echo "FINAL SUM: $sum"
test.sh の実行による出力
sum is now: 100
sum is now: 300
sum is now: 600
FINAL SUM: 0
最終的な合計は 600 になるはずです。これを修正するにはどうすればよいですか?