当前位置: 首页 > news >正文

Linux Shell 脚本中括号类型及用途

1. 圆括号 ()

用途:用于命令分组或子shell执行。
示例

( command1; command2 )  # 在子shell中执行命令,不影响当前环境
result=$(command)      # 命令替换,将命令输出赋值给变量

数学运算(需配合 $(( ))):

echo $(( 5 + 3 ))      # 输出8


2. 花括号 {}

用途:用于代码块、变量扩展或序列生成。
示例

{ command1; command2; }  # 在当前shell执行代码块(注意末尾分号和空格)
echo {1..5}             # 输出1 2 3 4 5(序列生成)
echo ${var:-default}    # 变量扩展,若var未定义则返回default

注意

  • 代码块末尾需有分号和空格。
  • 变量扩展时避免与重定向冲突(如${var}>file)。

3. 方括号 [][[]]

单方括号 []

  • 等效于 test 命令,用于条件测试。
  • 需严格保留空格和运算符。
if [ "$a" -eq 5 ]; then  # 数值比较echo "a等于5"
fi

双方括号 [[]]

  • 更强大的条件测试,支持模式匹配和逻辑运算符(如 &&||)。
if [[ "$str" == *"match"* ]]; then  # 字符串模式匹配echo "包含match"
fi


4. 尖括号 <>

用途:主要用于重定向。
示例

command < input.txt    # 输入重定向
command > output.txt   # 输出重定向
command 2> error.log   # 错误输出重定向


5. 双圆括号 (())

用途:专门用于算术运算。
示例

(( count++ ))          # 变量自增
if (( a > b )); then   # 数值比较echo "a大于b"
fi


常见问题及注意事项

  • 空格要求[][[]] 内必须保留空格(如 [ "$a" -eq 1 ]),而 (())$(()) 不需要。
  • 字符串比较:在 [[]] 中使用 ==!= 进行模式匹配,[] 中需用 =-eq
  • 变量引用:在 [] 中引用变量需加双引号(如 "$var"),避免空值错误。

总结

  • ():子shell执行或数组初始化。
  • (( )):算术运算与逻辑判断。
  • []:基础条件测试。
  • [[]]:高级条件测试(支持通配符)。
  • {}:序列扩展、变量操作。
  • $():命令输出捕获。
  • $(( )):算术结果捕获。
http://www.dtcms.com/a/361411.html

相关文章:

  • 【项目思维】嵌入式产业链与技术生态
  • 2025 最新React前端面试题目 (9月最新)
  • Windows Qt5.15.17源码使用VS2019编译安装
  • 六、练习3:Gitee平台操作
  • 瑞芯微RK3576平台FFmpeg硬件编解码移植及性能测试实战攻略
  • 深入掌握 Flask 配置管理:从基础到高级实战
  • 校园网IP地址要如何管理
  • MySQL基础知识保姆级教程(四)基础语句
  • 人工智能学习:NLP文本处理的基本方法
  • C++函数执行时间统计工具:轻量级性能分析的最佳实践
  • 触想轨道交通应用案例集锦(一)
  • PAT 1089 Insert or Merge
  • G156HAN04.0 宽温域高亮工业屏技术白皮书
  • 矩阵中寻找好子矩阵
  • leetcode5( 多数元素)
  • 力扣 23 912题(堆)
  • MySQL 体系结构
  • 09.《路由基础知识解析和实践》
  • 【C#实战】使用ListBox控件与生成器模式构建灵活多变的金融资产管理系统
  • 金融数据安全
  • 云原生新手入门完整学习指南
  • 基于单片机智能家居语音控制系统
  • 《IC验证必看|随机稳定性 / 再现性》
  • 手把手教你搭建 UDP 多人聊天室(附完整源码)
  • 网络层和数据链路层
  • 【LeetCode热题100道笔记+动画】乘积最大子数组
  • 构建深度学习音频识别模型:从数据预处理到性能评估
  • PitVis-2023挑战赛:内镜下垂体瘤手术视频中的手术流程识别|文献速递-深度学习人工智能医疗图像
  • 1. 从零开始搭建微服务架构1.0(登录模块)
  • 安科瑞微电网智慧能源平台:构建源网荷储一体化新型电力系统