我在退出循环后遇到一些局部变量问题。尽管有以下代码,变量 max
最终值为 0:
max=0
cat tmp|while read line
do
temp=$(echo $line|tr -d "\n"|wc -c)
if [ $temp -gt $max ];then
max=$temp
echo $max
fi
done
echo -n tmp $max
cat tmp
12345
123456
这是我收到的输出:
5
6
tmp 0
我不明白为什么 max
在退出循环后为 0,而在循环内却找到了正确的值。
最佳答案
管道启动一个新的子shell,它有自己的环境和变量空间。使用 < tmp
而不是在循环的末尾。
关于bash - 循环退出后的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060082/