BASH:如果是那么基本和变量赋值

时间:2013-09-17 17:42:23

标签: bash if-statement

我习惯了csh,所以这有点刺激,不得不使用bash。这段代码有什么问题?

if[$time > 0300] && [$time < 0900]
then
$mod=2
else
$mod=0
fi

1 个答案:

答案 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 进行算术比较可能最适合您的偏好:

(( ))