我正在尝试计算每行包含一个单词的文件中单词的出现(禁止使用egrep)。我设法找到了一个解决方案,但是我偶然发现了一个非常奇怪的东西,我想解释为什么会发生这种情况。
我的“count”变量在循环后的值为0,但在循环期间它会正确递增。
这是我的代码:
for var in "$@"
do
count=0
cat $1 | while read line ; do
if [ $line = $var ]; then
count=$((count + 1))
echo "$var found $count times"
fi
done
echo $count
done
我的输出是:
yes found 0 times
yes found 1 times
yes found 2 times
0 - This is from the echo $count, which I find it very odd to be zero, since it got incremented to 3 during the loop.
答案 0 :(得分:1)
我相信当你用管道输出一个新的子shell时,会在那个shell中修改count并不是你现在的那个。似乎其他人也有这个问题。我从另一个Thread遇到了这个解决方案。我希望这有帮助!