我已将我的代码修改为这个简单的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的子shell的答案。
但是,我在这里没有使用竖线字符。
答案 0 :(得分:2)
()
产生一个子shell。
所以它实际上是在子shell中添加的,当子shell退出父shell时没有结果而是从0
再次启动,因此你总是得到1。
要解决此问题,请删除子shell。