Linux Shell 脚本中括号类型及用途示例小结

本文给大家介绍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执行或数组初始化。
  • (( )):算术运算与逻辑判断。
  • []:基础条件测试。
  • [[]]:高级条件测试(支持通配符)。
  • {}:序列扩展、变量操作。
  • $():命令输出捕获。
  • $(( )):算术结果捕获。