不是bash脚本变量无类型(自动转换)?

时间:2015-03-17 05:21:32

标签: bash

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脚本变量无类型(自动转换)?

2 个答案:

答案 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 ]]