我正在嘗試觀察並輸出較長腳本的進度。 (稍後我想用Progress來計算進度條)。我在bash中使用全局變量while + pipe會出現什麼問題?
這裏是一個縮短的例子:
#!/bin/bash
PROGRESS=0
updateprogress() {
PROGRESS=$((PROGRESS + 1))
echo $PROGRESS
}
<do something>
updateprogress
sudo cat /root/.virtualMachines | while read -r name ipAddr # <-7 lines
do
<do something>
updateprogress
done
sudo cat /root/.virtualServices | while read -r name ipAddr # <-3 lines
do
<do something>
updateprogress
done
什麼我現在想到會是這樣
1 <-# before the first while)
2
3
4
5
6
7
8 <-# end of first while)
9
10
11 <-# end of second while)
輸出,但我得到的是
1 <-# before first while)
2
3
4
5
6
7
8 <-# end of first while
2
3
4 <-# end of second while
所以這個問題有是關於全局/局部範圍的東西,但我怎樣才能只使用我在頂部定義的全局變量$ PROGRESS所有函數調用?
是否存在涉及的管道?例如。 '命令|而...' – choroba
是的確的它是我將它更新到我的問題 – derHugo
感謝您的問題;)我認爲與您的輸入我找到了答案[這裏](https://stackoverflow.com/questions/16854280/一個不可修改的內部循環不記得) – derHugo