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循环是在单独的进程中运行还是什么?
答案 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的说明初始化你的变量。