gpt4 book ai didi

bash while 语句

转载 作者:行者123 更新时间:2023-11-29 09:49:14 26 4
gpt4 key购买 nike

我有 2 个不同的脚本做的基本相同:计算当前目录中的子目录:

c=0

ls -l | grep "^d" | while read zeile
do
c=`expr $c + 1`
echo $c
done

echo "Subdirs: $c"

c=0

while read zeile
do
c=`expr $c + 1`
echo $c
done < <(ls -l | grep "^d")

echo "Subdirs: $c"

我的问题是,在第一个版本中,“c”似乎在 while 循环结束后失去了它的值(value)。

输出

1)

1
2
3
Subdirs: 0

2)

1
2
3
Subdirs: 3

你们谁能给我解释一下,为什么会这样?

提前致谢亚历克斯

最佳答案

在第一种情况下,对 c 的赋值发生在 | 之后,即在子 shell 中。您不能从子 shell 更改父 shell 中的变量。顺便说一句,你为什么不使用 let c++ 而不是反引号和 expr?

关于bash while 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com