shell脚本中的全局变量
我想在以下代码中将 z
设为全局变量:
#!/bin/bash
z=0;
find $1 -name "*.txt" | \
while read file
do
i=1;
z=`expr $i + $z`;
echo "$z";
done
echo "$z";
最后一条语句始终输出“0”。为什么?
I would like to make z
a global variable in the following code:
#!/bin/bash
z=0;
find $1 -name "*.txt" | \
while read file
do
i=1;
z=`expr $i + $z`;
echo "$z";
done
echo "$z";
The last statement always outputs "0". Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
管道启动一个新的子 shell。
Pipes start a new subshell.
简单方法
转换为不带管道的表单的 是使用 进程替换< /a>:
可读性有所下降。
The simple way to translate
to a form without pipes is using process substitution:
Readability suffers somewhat.
我不知道为什么会发生这种情况,但问题是由管道引起的。
如果你这样做
,那么 $z 将不会为零。
I don't know why this happened, but the problem is caused by the pipe.
If you do it like this
then $z will not be zero.