【整理】Linuxshell中各种括号的用法

编程

最近被shell里的各种括号弄的有点晕了,又是小括号又是中括号,有时又有花括号,小括号和中括号还有双层写法,用途各不一样,我搞混了多次,对它们的用法有些迷糊了,于是我在这里整理一下。如有错误,望诸君指正。

小括号系列

目录

  • 小括号系列
    • ()
    • $()
    • (())
    • $(())
  • 中括号系列
    • []
    • $[]
    • [[]]
  • 花括号系列
    • {}
    • ${}
  • 总结

()

  • 用途:数组初始化

array=(1 2 3 4 5)

$()

  • 用途:引用命令的运行结果

# 先执行小括号中的命令,然后使用将命令的运行结果赋值给a

a=$(command)

(())

  • 用途1:数值比较

#!/bin/bash

a=1

b=2

if ((a>b))

then

echo "a>b"

elif ((a<b))

then

echo "a<b"

fi

# a<b

  • 用途2:高级数学运算

    双小括号命令提供了更多的数学符号,可以在双小括号中进行各种逻辑运算、数学运算,也支持更多的运算符(如 ++、-- 等)。

#!/bin/bash

# 实现c语言式迭代

for ((i=0;i<5;i++))

do

command

done

$(())

  • 用途1:进行数学计算

a=1

b=2

echo $((a+b)) # 3

中括号系列

[]

  • 用途1:条件测试

    • 字符串比较

      == 等于

      != 不等于

    • 整数比较:

      -gt 不等于

      -lt 大于

      -ne 等于

      -gt 不等于

  • 表达式与[]之间要有空格

#!/bin/bash

if [ hello == hello ]

then

echo "yes"

else

echo "no"

fi

# yes

  • 用途2:数组索引

array=(1 2 3 4 5)

echo ${array[2]}

# 3

$[]

  • 效果等同于$(())

[[]]

  • 用途:字符串比较的高级模式

    && || < > 可以正常存在于[[]]中

    可在[[]]中使用正则表达式

#!/bin/bash

if [[ hello == hell* ]]

then

echo "yes"

else

echo "no"

fi

# yes

花括号系列

{}

  • 用途:构造序列

echo {1..5}    # 1 2 3 4 5

echo {5..1} # 5 4 3 2 1

echo {1..10..2} # 1 3 5 7 9

echo {a..c} # a b c

echo {1..3}{a..c} # 1a 1b 1c 2a 2b 2c 3a 3b 3c

${}

  • 引用变量值

# 数组取值

array=(1 2 3 4 5)

echo ${array[2]} # 3

a=1

echo ${a}b # 1b

echo $ab # bash会认为ab是一个整体,由于ab没有定义,所以会报错

总结

  • 引用:

    • 引用变量值 ${}
    • 引用命令运行结果 $()

  • 数学运算:$[] (()) $(())
  • 条件测试:[] [[]] (())

以上是 【整理】Linuxshell中各种括号的用法 的全部内容, 来源链接: utcz.com/z/515127.html

回到顶部