一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux Shell 脚本中的算术运算和逻辑判断控制流

时间:2026-07-08 09:47:52 编辑:袖梨 来源:一聚教程网

Shell脚本算术运算首选$(( )),支持完整整数运算且无需转义;数值比较用-eq/-lt等,字符串比较用=且两侧必须空格;文件判断用-f/-d/-r等,条件组合推荐[[ ]]配合&&/||。

Shell 脚本里做算术和判断,关键不是“能不能”,而是“用对语法”——写错空格、混用符号、忽略类型差异,很容易执行失败或逻辑出错。

算术运算:优先用 $(( )),别碰 expr 的坑

Shell 不直接支持浮点,整数运算是主力。三种写法中,$(( )) 最推荐:

  • 支持 + - * / % 等全部运算符,乘号不用转义
  • 可嵌套变量、表达式,比如 result=$(( (a + b) * c ))
  • 赋值时自然连写:count=$((count + 1)) 或简写为 ((count++))
  • expr$[ ] 已逐步淘汰:expr 要求每个操作符前后加空格,* 必须写成 *$[ ] 兼容性差,bash 新版本不鼓励使用

数值与字符串判断:别用错运算符

Shell 对类型敏感,数值比较不能用 =,字符串比较不能用 -eq

  • 数值判断必须用 -eq-lt-ge 等,写在 [ ] 内,如:[ $num -gt 10 ]
  • 字符串相等用 ===(推荐 =),注意等号两侧必须有空格:[ "$str" = "yes" ]
  • 判空用 -z(空)或 -n(非空):[ -z "$input" ][ "$input" = "" ] 更安全
  • 避免裸写 [ $a = $b ] —— 若变量为空,会变成 [ = ],语法错误

文件与权限判断:常用就那几个,记牢就行

运维脚本高频需求,重点记住这几个实用判断:

  • -f file:存在且是普通文件(不是目录、链接等)
  • -d dir:目录存在
  • -r /path-w /path-x /path:对应读、写、执行权限
  • -s file:文件存在且大小 > 0(非空文件)
  • -e path:路径存在(文件、目录、链接均可)

组合条件与流程控制:用好 && || 和 if 结构

单行逻辑或复杂分支,靠的是组合方式清晰、括号明确:

  • 短路逻辑优先用 &&||,比如:[ -f "$log" ] && rm "$log"
  • 多条件组合用 [ ] 内的 -a(and)、-o(or),但更推荐用 [[ ]] 配合 &&/||,例如:[[ -r "$file" && -s "$file" ]]
  • if 结构注意 then 和 fi 必须成对,elif 可多层,条件后要加分号或换行
  • 简单多选场景用 case,比一堆 if-elif 更易读,尤其处理命令行参数时

热门栏目