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