touch "data"
if [ $(stat -c%s "data") < 1024 ]; then
echo "not this file"
fi
无法检查文件大小是否小于1MiB。 (当然,data
应该是一个空文件。)
会出现此错误:
./chk.sh: line 2: 1024: No such file or directory
Aren&#t; bash脚本变量无类型(自动转换)?
答案 0 :(得分:2)
您应该使用-lt
代替<
进行整数比较
=
和!=
用于字符串比较
<
和>
用于重定向
答案 1 :(得分:1)
如果您将条件括在((
和))
附近,则可以使用<
运算符:
touch "data"
if (( $(stat -c%s "data") < 1024 )); then
echo "not this file"
fi
(( <EXPRESSION> ))
被称为Arithmetic evaluation,仅适用于Arithmetic expressions。
更新:正如rici所指出的,<
和[[
之间的]]
运算符将执行字符串比较,类似于{{ 1}}将评估为[[ 3 < 21 ]]
。