Bash shell脚本中的全局变量
我想在以下代码中将Bash shell脚本中的全局变量,bash,shell,Bash,Shell,我想在以下代码中将z设置为全局变量: #!/bin/bash z=0; find $1 -name "*.txt" | \ while read file do i=1; z=`expr $i + $z`; echo "$z"; done ec
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”。为什么?我不知道为什么会发生这种情况,但问题是由管道引起的 如果你这样做
#!/bin/bash
z=0;
for f in `find $1 -name "*.txt"`
do
i=1;
z=`expr $i + $z`;
echo "$z";
done
echo "$z";
那么$z就不会是零。简单的翻译方法
find ... | while read ...; done
要创建不带管道的窗体,请使用:
读取时。。。;完成<如何获取z内的最后一个值?您可以使用z=$((z+I))
或((z+=I))
来了解调用expr
while read ...; done < <(find ...)