变量比较错误

时间:2016-03-25 21:10:14

标签: linux bash conditional

各位大家好,抱歉英文不好! 我正试图发出“电报警报”并将其作为条件:

NOW=$(date +%s)
NOWCHECK=$((NOW-3))
[...]
if ("$DATE" < "$NOWCHECK"); then  # DATE is a string variable with seconds passed from 1/1/1970
...
fi

我收到此错误:

line 26: 1458939588: No such file or directory

我做错了什么? 提前谢谢!

3 个答案:

答案 0 :(得分:4)

您遇到的是Bash尝试在(...)内执行该表达式。它被解释为运行$DATE命令,并将输入从$NOWCHECK重定向到它。但那不是你想要的。

算术运算的运算符为((...))而非(...)。这样做:

if (("$DATE" < "$NOWCHECK")); then

最好将$放在((...))

if ((DATE < NOWCHECK)); then

答案 1 :(得分:2)

使用:

if [[ "$DATE" -lt "$NOWCHECK" ]];   # -lt: less than

答案 2 :(得分:0)

如果设置了这两个变量:

NOW=$(date +%s)    NOWCHECK=$((NOW-3))

然后:切换到正确的算术扩展(( ... ))

if (( NOW < NOWCHECK )); then
...
fi

或删除<字符(被解释为重定向并显示错误,因为名为NOWCHECK的值的源文件不存在):

if [[ $NOW -lt $NOWCHECK ]]; then
...
fi
if [ "$NOW" -lt "$NOWCHECK" ]; then
...
fi