Bash脚本 - while循环中的变量范围

时间:2012-10-03 05:39:07

标签: bash

  

可能重复:
  Bash Script - Variable Scope in Do-While loop

在下面的代码中,它在内部while循环中打印正确的i值,但是在内部while循环中它打印出0:

string="Medicine"
for file in *
do
    i=0
    cat $file | while read line
    do
        echo $line
        if [ "$line" == "$string" ];
        then
            i=`expr $i + 1`
            echo $i
        fi
    done
    echo $i
done

1 个答案:

答案 0 :(得分:-1)

默认情况下,变量在shell脚本中具有全局范围,这使得" i"全球。如果您想将变量设为本地变量,请使用关键字" local" ,例如:local i=0

有关详细信息,请查看链接http://www.bashguru.com/2008/06/bash-variables-scope.html