1

重複の可能性:
Bash スクリプト - Do-While ループの変数スコープ

次のコードでは、内側の 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
4

1 に答える 1

-1

デフォルトでは、変数はシェルスクリプトでグローバルスコープを持ち、「i」をグローバルにします。変数をローカルとして作成する場合は、キーワード「ローカル」を使用します。例:local i=0

詳細については、リンクhttp://www.bashguru.com/2008/06/bash-variables-scope.htmlを確認してください。

于 2012-10-03T05:45:30.600 に答える