我使用command | awk '{ print $1; }' | while read val ; do
來循環顯示命令輸出。最近,我想要計算總和,我發現在bash
一些奇怪的行爲:test.txt的爲什麼一個變量在一個循環內更改,在循環外部保持不變
內容的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"
100
200
300
內容從執行test.sh輸出
sum is now: 100
sum is now: 300
sum is now: 600
FINAL SUM: 0
最終總和應該是600.我該如何解決這個問題?
+1。我只是補充一點,關於這裏發生了什麼的文檔是在[**'bash'手冊頁**上](http://www.freebsd.org/cgi/man.cgi?query=bash&apropos = *&sektion = 0&manpath = FreeBSD + Ports&arch = default&format = html#EXPANSION)標題爲「[* Process Substitution *]」(http://www.tldp.org/LDP/abs/html/abs-guide.html#PROCESS -SUB)」。 – ghoti