变量比较错误

Variable comparison error

大家好,抱歉英语不好! 我正在尝试制作一个 "telegram alert" 并使其成为条件:

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

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

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

算术运算符是((...))而不是(...)。这样做:

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

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

if ((DATE < NOWCHECK)); then

使用:

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

如果您设置了这两个变量:

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

然后:要么切换到正确的算术展开(( ... ))

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

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

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

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