我想在以下代码中将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”。为什么呢?
答案 0 :(得分:5)
答案 1 :(得分:1)
翻译的简单方法
find ... | while read ...; done
到没有管道的表单正在使用process substitution:
while read ...; done < <(find ...)
可读性受到一定程度的影响。
答案 2 :(得分: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不会为零。