BASH:基本 if then 和变量赋值

标签 bash if-statement

我习惯了 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 脚本中,您使用 []测试值。没有类似算术的比较运算符,如 ><[ ] , 只有 -lt , -le , -gt , -ge , -eq-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

关于BASH:基本 if then 和变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18856439/

相关文章:

linux - 使用 scp 命令将特定文件从服务器复制到本地计算机 (Linux)

bash - 如何按编号的百分比拆分文件。线?

java - 两个小型结构的性能差异

java - 如何验证序列中的3个数字相等?

ios - Objective C - 编写 if 语句的更好方法

excel - 电子表格中的 COUNTIFS,同时忽略单独列中的重复项

javascript - 比较二维数组与一维数组的值

shell - 如何调用 bash,在新 shell 中运行命令,然后将控制权交还给用户?

linux - 操作系统检测中的语法问题

bash - 在bash中在不同用户下生成后台进程