簡體   English   中英

Bash變量在for循環中重置(無管道)

[英]Bash variable resets in for loop (no pipe)

我已經將代碼精簡為這個簡單的for循環。 我不明白為什么計數器tot_add不是一直累加而是1:

cd /path/to/my/workspace;
tot_add=0;
for d in ./*/;
do (cd "$d";
 let tot_add=tot_add+1;
 echo $tot_add;
) done

預期結果:

1
2
3

實際結果

1
1
1

我已經閱讀了有關Pipe子殼的答案。

BASH常見問題解答條目24:“我在循環中設置了變量。為什么循環終止后它們突然消失?或者,為什么我不能通過管道傳輸要讀取的數據?”

但是,我在這里不使用豎線字符。

()產生一個subshel​​l。

因此,它實際上是添加到子shell中的,當子shell退出時,父shell沒有結果,而是從0開始,因此您總是得到1。

若要解決此問題,請擺脫子外殼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM