Linux 变量比较误差
大家好,很抱歉英语不好! 我试图发出一个“电报警报”,并提出了以下条件:Linux 变量比较误差,linux,bash,conditional,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 我做错了什么? 提前谢谢 您所经历的是Bash正在尝试执行(…)中的表达式。它被解释为运行$DATE命令,并将输入从$NOWCH
NOW=$(date +%s)
NOWCHECK=$((NOW-3))
[...]
if ("$DATE" < "$NOWCHECK"); then # DATE is a string variable with seconds passed from 1/1/1970
...
fi
我做错了什么?
提前谢谢 您所经历的是Bash正在尝试执行
(…)
中的表达式。它被解释为运行$DATE
命令,并将输入从$NOWCHECK
重定向到它。但那不是你想要的
算术运算的运算符是(…)
而不是(…)
。这样做:
if (("$DATE" < "$NOWCHECK")); then
使用:
如果设置了这两个变量:
NOW=$(date +%s) NOWCHECK=$((NOW-3))
然后:切换到正确的算术展开(…)
if ((DATE < NOWCHECK)); then
if [[ "$DATE" -lt "$NOWCHECK" ]]; # -lt: less than
NOW=$(date +%s) NOWCHECK=$((NOW-3))
if (( NOW < NOWCHECK )); then
...
fi
if [[ $NOW -lt $NOWCHECK ]]; then
...
fi
if [ "$NOW" -lt "$NOWCHECK" ]; then
...
fi