2010-12-15 22 views
1
for arg; do 
     [ -f "$arg" ] && x=1 && continue                                  
     echo "Not a File" >&2 
done 

[ "$x" -eq 0 ] && echo "No valid files" 

私はこのエラーを取得しています:[: : integer expression expectedUnix:なぜ「整数式が必要ですか?」

これが間違っていますか? forループは別のプロセスなどで実行されていますか?

答えて

4

おそらく 'x'が設定されていないため、比較は空の文字列と整数に変換されます。空の文字列がうまくいきません。

x=0 
...loop as now... 
[ $x -eq 0 ] ... 

これは、誰かが、環境変数「X」をエクスポートする場合は、あなたのコードを破ることができる方法の数を減らすのに有益な副作用を持っている問題を解決するには。

bashで
2

、使用:POSIXシェルで

((x == 0)) && echo "No valid files" 

[ ${x:-0} -eq 0 ] && echo "No valid files" 

やジョナサンに示すように、あなたの変数を初期化します。

関連する問題