相关疑难解决方法(0)

Shell 变量不会随管道同时读取组合而改变

考虑案例 1:

$ COUNT=0 ; while [ $COUNT -ne 3  ]; do echo $COUNT; COUNT=$(expr $COUNT + 1 );done
0
1
2
$ echo $COUNT
3
Run Code Online (Sandbox Code Playgroud)

COUNT正如预期的那样,到循环结束时,变量为 3

考虑情况 2:

$ COUNT=1; find . -print0 | while IFS= read -r -d '' FILE; do echo "$FILE"; expr $COUNT + 1; COUNT=$(expr $COUNT + 1 )  ;done 
.
2
./file name
3
./file
4
./a
b
5
$ echo $COUNT
1
Run Code Online (Sandbox Code Playgroud)

如您所见,在这种情况下 COUNT 保持不变。为什么 ?可以看出,它在while循环内部发生了变化,但一旦脱离循环就不会发生变化。

我到底错过了什么?

command-line bash

5
推荐指数
1
解决办法
435
查看次数

标签 统计

bash ×1

command-line ×1