变量比较错误
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
大家好,抱歉英语不好! 我正在尝试制作一个 "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