Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 变量比较误差_Linux_Bash_Conditional - Fatal编程技术网

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