我习惯了 csh,所以不得不使用 bash 有点烦人。这段代码有什么问题?
if[$time > 0300] && [$time < 0900]
then
$mod=2
else
$mod=0
fi
我习惯了 csh,所以不得不使用 bash 有点烦人。这段代码有什么问题?
if[$time > 0300] && [$time < 0900]
then
$mod=2
else
$mod=0
fi
按标准应该是
if [ "$time" -gt 300 ] && [ "$time" -lt 900 ]
then
mod=2
else
mod=0
fi
在普通的 shell 脚本中,您使用[
and]
来测试值。没有类似算术的比较运算符,例如>
and <
in [ ]
,只有-lt
, -le
, -gt
, -ge
, -eq
and -ne
。
当您使用 bash 时,[[ ]]
这是首选,因为变量不受拆分和路径名扩展的影响。您也不需要$
为算术比较扩展变量。
if [[ time -gt 300 && time -lt 900 ]]
then
mod=2
else
mod=0
fi
此外,(( ))
用于算术比较可能最适合您的偏好:
if (( time > 300 && time < 900 ))
then
mod=2
else
mod=0
fi