shell中各种括号的作用`‘()‘‘{}‘‘[]‘`等

参考链接:shell 中各种括号的作用()、(())、[]、[[]]、{}

一、小括号,圆括号 ()

1.1 单小括号 ()

  • 命令组:括号中可以放多条命令,命令之间通过分号;分隔,用空格是没用滴,举例子:
COMAND=$(pwd ; ls; pwd)
echo $COMAND
#下面是结果
/home/test_and_learn/shell test.sh vriable.sh /home/test_and_learn/shell
  • 命令替换:没看懂
  • 数组初始化:array=(a b c d)

1.2 双小括号 ()

  • 整数扩展:没看懂
  • 将符合c语言运算规则的运算符表达式转为10进制,举例;
echo $((16#20)) # 16进制转10进制
echo $((0x20))  # 16进制转10进制
echo $((8#20))  # 8进制转10进制
echo $((020)) 	 # 8进制转10进制
echo $((1 == 2 ? 3 : 4))
# 下面是脚本输出
32
32
16
16
4
  • 单纯用 (( )) 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6
  • 常用于算术运算比较,

比如下面三种for等价

for((i=0;i<5;i++))
for i in `seq 0 4`
for i in {0..4}

在这里插入图片描述

比如下面两种if等价

if (($i<5))
if [ $i -lt 5 ]

二、中括号,方括号[]

2.1 单中括号 []

  • bash内部命令,左中括号表示调用test的命令标识,右中括号是关闭条件判断。
  • Test和[]中比较运算符只有==!=, 这两者仅用于 字符串 比较墙裂不建议用于整数比较(可能因被比较对象包含字符产生不察觉的错误结果),整数比较必须用-eq(等于), -ne(不等于), -gt(大于), -ge(大于等于),-It(小于),-Ie(小于等于),这种形式
  • 还有部分没完全看懂
  • 在一个array 结构的上下文中,中括号用来引用数组中每个元素的编号

2.2 双中括号 [[]]

  • 使用[[ … ]]条件判断结构,而不是[ … ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不使用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]

三、大括号、花括号 {}

3.1 常规用法

3.2 几种特殊的替换结构

3.3 四种模式匹配替换结构

3.4 字符串提取和替换

四、符号$后的括号

  • ${a} 变量a的值, 在不引起歧义的情况下可以省略大括号。
  • $(cmd) 命令替换,结果为shell命令cmd的输出,举例:下面这两行效果一样。(某些Shell版本不支持$()形式的命令替换, 如tcsh)
echo $(pwd)
echo `pwd`
  • $((expression)) 和exprexpression效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算(上面1.2 双小括号这一小节讲过了哥哥)

五、使用

多条命令执行 :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值