管道引起的變量賦值問題

引起問題的shell程序:

$ cat tt.txt
1
2
3
$ cat tt.sh
#!/bin/sh

tt=0

cat tt.txt|while read num;
do
<span style="white-space:pre">	</span>tt=5
<span style="white-space:pre">	</span>echo $tt
done

echo $tt
執行tt.sh,你的期望是得到5對吧,但結果是出乎意料的

$ ./tt.sh
5
5
5
0
這是爲什麼呢?

我們先看一下,能夠得到正確結果的腳本是長什麼樣的:

$ cat tt.sh
#!/bin/sh

tt=0

while read line;
do
	tt=5
	echo $tt
done < tt.txt

echo $tt
$ ./tt.sh
5
5
5
5
發佈了80 篇原創文章 · 獲贊 60 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章