Unix:为什么我会得到“预期的整数表达式”?

时间:2010-12-15 19:10:17

标签: bash unix

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

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

我收到此错误:[: : integer expression expected

这有什么问题? for循环是在单独的进程中运行还是什么?

2 个答案:

答案 0 :(得分:4)

可能因为'x'未设置,所以比较是在转换为整数的空字符串和零之间。对空字符串不满意。

修复

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

如果有人导出环境变量'x',这会产生减少代码破解方式的有益副作用。

答案 1 :(得分:2)

在Bash中,使用:

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

在POSIX shell中:

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

或按照Jonathan的说明初始化你的变量。