SHELL 括号()、(())、[]、[[]]、{}的作用和区别

1 $()和 ` `

1.1 在 bash shell 中,$( ) 与` ` (反引号) 都可用做命令替换用

e.g

var=`ls -l | wc -l`
echo $var

var1=$(ls -l | wc -l)
echo $var1

1.2 各自的优缺点:

    `  ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高,但反单引号容易打错或看错。

    $()并不是所有shell都支持。

2 ${ }

2.1 ${ }用于变量替换。一般情况下,$var 与${var} 并没有什么不一样,但是用 ${ } 会比较精确的界定变量名称的范围

e.g

A=B
echo $AB
echo ${A}B

2.2 ${ }的模式匹配功能:

# 是去掉左边(在键盘上#在$之左边)
% 是去掉右边(在键盘上%在$之右边)
#和%中的单一符号是最小匹配,两个相同符号是最大匹配。

${variable#pattern}:shell在variable中查找,看它是否以给定的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的>匹配模式

${variable##pattern}:shell在variable中查找,看它是否以给定的模>式pattern开始,如果是,就从命令行把variable中的内容去掉左边最长>的匹配模式

${variable%pattern}:shell在variable中查找,看它是否以给定的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的>匹配模式

${variable%%pattern}:shell在variable中查找,看它是否以给定的模>式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长>的匹配模式

variable=abcabdab
echo ${variable#ab}
echo ${variable##ab}
echo ${variable%ab}
echo ${variable%%ab}

3 $[] $(()) 

3.1 $[]和$(())是一样的,都是进行数学运算的。支持+ - * / %(“加、减、乘、除、取模”)。但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。

e.g

echo $((1+2*3))
echo $((5/2))
echo $((5%3))
echo $((1.2+3.5))

4 [ ]

 

为test命令的另一种形式,但要注意:

1.必须在左括号的右侧和右括号的左侧各加一个空格,否则会报错。

2.test命令使用标准的数学比较符号来表示字符串的比较,而用文本符号来表示数值的比较。

3.大于符号或小于符号必须要转义,否则会被理解成重定向。

e.g

a=1
b=2
if [ $a == $b ]; then
    echo true
elif [ $a \< $b ]; then
    echo a is litle than b
else
    echo false
fi

5 (( ))及[[ ]]

5.1 分别是[ ]的针对数学比较表达式和字符串表达式的加强版

[[ ]]中增加模式匹配特效;

(( ))不需要再将表达式里面的大小于符号转义,除了可以使用标准的数学运算符外,还增加了以下符号:

5.2 e.g

a=1
b=2
if (($a == $b)); then
    echo true
elif (($a < $b)); then
    echo a is litle than b
else
    echo false
fi

a='ss'
b='ss'
if [[ $a == $b ]]; then
    echo true
elif [[ $a < $b ]]; then
    echo a is litle than b
else
    echo false
fi

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值