bash - 循环退出后的局部变量

标签 bash

我在退出循环后遇到一些局部变量问题。尽管有以下代码,变量 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/

相关文章:

bash - 带有存储在文件中的通配符的 grep

python - 在 python 中运行 python 脚本

bash - 如何使用 ack 查找包含两种模式的文件?

java - 获取所有 @Tests 的列表(jUnit 测试)

bash - 停止 Bash 脚本中的无限递归

linux - 如何使 .bashrc 中的更改在当前终端中生效

bash - “bad interpreter: Operation not permitted” El Capitan 错误

Bash 在 printf 的格式字符串的开头使用 ---(三破折号)

r - 自动响应 “Yes”对R库的提示

bash - 如何使用 bash 从 wttr.in curl 结果中获取当前平均温度?