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

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.xdnf.cn/news/19483.html

相关文章:

  • three.js+WebGL踩坑经验合集(10.2):镜像问题又一坑——THREE.InstancedMesh的正反面向光问题
  • UART-TCP双向桥接服务
  • 【51单片机三路抢答器定时器1工作1外部中断1】2022-11-24
  • 参数检验vs非参数检验
  • docker 网络配置
  • 【高级】系统架构师 | 2025年上半年综合真题
  • 硬件开发_基于Zigee组网的果园养殖监控系统
  • 56_基于深度学习的X光安检危险物品检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • aws上创建jenkins
  • 力扣 23 912题(堆)
  • JAVA 面试宝典02
  • 工业飞拍技术:高速生产线的 “动态抓拍神器”,到底牛在哪?
  • 20250829的学习笔记
  • 基于GCN图神经网络的光伏功率预测Matlab代码
  • Spark实现推荐系统中的相似度算法
  • Proteus 仿真 + STM32CubeMX 协同开发全教程:从配置到仿真一步到位
  • 盟接之桥说制造:守正出奇:在能力圈内稳健前行,以需求导向赢得市场
  • 基于51单片机220V交流电流检测系统过流阈值报警设计
  • 增强现实—Gated-attention architectures for task-oriented language grounding
  • 从零开始的python学习(九)P134+P135+P136+P137+P138+P139+P140
  • 【LeetCode热题100道笔记+动画】颜色分类
  • 【面试场景题】如何快速判断几十亿个数中是否存在某个数
  • python-pptx 库(最常用,适合生成/修改 PPT 文件)
  • 深入解析quiche开源项目:从QUIC协议到云原生实践
  • 大模型微调与LoRA/QLoRA方法解析
  • 四、练习1:Git基础操作
  • Python爬虫实战:研究Colormap,构建优质色彩方案数据采集和分析系统
  • 学习:uniapp全栈微信小程序vue3后台-暂时停更
  • C# Task 入门:让你的程序告别卡顿
  • 一文读懂k8s的pv与pvc原理