Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别

1.$()

在 bash shell 中,$( ) 与 ` (反引号) 都是用来做命令替换用(commandsubstitution)的。
例如 version=$(uname -r)和version= \
uname -r都可以是version得到内核的版本号
各自的优缺点:
1. \
` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。但反单引号容易打错或看错。
2. $()并不是所有shell都支持。

2.${ } :变量替换

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

$A=B
$ echo $AB
原本是打算先将 ABAB使$$echo A 的 结 果 替 换 出 来 , 然 后 再 补 一 个 B 字 母 于 其 后 , 但 在 命 令 行 上 , 真 正 的 结 果 却 是 只 会 提 换 变 量 名 称 为 A B 的 值 出 来 … 若 使 用 $ 就 没 问 题 了 : $ e c h o {A}B
BB

${ }的功能远不止于此,详见下表。

这里写图片描述

3.$ [] $ (()) :

它们是一样的,都是进行数学运算的。支持+ - * / %:分别为 “加、减、乘、除、取模”。但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。

例:
$ a=5; b=7; c=2
$ echo $(( a+b*c ))
19
$ echo $(( (a+b)/c ))
6
$ echo $(( (a*b)%c))
1$(( )) 中的变量名称,可于其前面加 $ 符号来替换,也可以不用,如:
$(( $a + $b * $c)) 也可得到 19 的结果
此外,$(( )) 还可作不同进位(如二进制、八进位、十六进制)作运算呢,只是,输出结果皆为十进制而已:
echo $((16#2a)) 结果为 42 (16进位转十进制)

4.[ ]

即为test命令的另一种形式。
但要注意许多:
1.你必须在左括号的右侧和右括号的左侧各加一个空格,否则会报错。
2.test命令使用标准的数学比较符号来表示字符串的比较,而用文本符号来表示数值的比较。很多人会记反了。使用反了,shell可能得不到正确的结果。
3.大于符号或小于符号必须要转义,否则会被理解成重定向。

5.(( ))及[[ ]]

它们分别是[ ]的针对数学比较表达式和字符串表达式的加强版。
其中(( )),不需要再将表达式里面的大小于符号转义,除了可以使用标准的数学运算符外,还增加了以下符号:

这里写图片描述

  • 18
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值