各位大家好,抱歉英文不好! 我正试图发出“电报警报”并将其作为条件:
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
我做错了什么? 提前谢谢!
答案 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