Linux Shell 中各种括号的使用: ${ }、$( )、` `、$[ ]、$(( ))、[ ]、[[ ]]、(( ))

1、 ${} : 引用变量,还有一些其他的功能:
​fname=/aa1/aa2/aa3/dd.ee.txt

#: 从左边开始找起。##就是从那一边找起的最后一个
${fname#*/} 去掉左边第一个 / 及其左边的字符串:aa1/aa2/aa3/dd.ee.txt
${fname##*/} 去掉左边最后一个 / 及其左边的字符串:dd.ee.txt
${fname#*.} 去掉左边第一个 . 及其左边的字符串:ee.txt
${fname##*.} 去掉左边最后一个 . 及其左边的字符串:txt

%:从右边开始找起。%%就是从那一边找起的最后一个
${fname%/*} 去掉右边第一个 / 及其右边的字符串:/aa1/aa2/aa3
${fname%%/*} 去掉右边最后一个 / 及其右边的字符串:(空值)
${fname%.*} 去掉右边第一个 . 及其右边的字符串:/aa1/aa2/aa3/dd.ee
${fname%%.*} 去掉右边最后一个 . 及其右边的字符串:/aa1/aa2/aa3/dd

使用冒号(:) 截取一段字符串,${str:start:length}
${fname:0:3} 截取index从0开始的 4 个字节:/aa1
${fname:4:4} 截取index从4开始的 4 个字节:/aa2

使用单斜杠(/)和双斜杠(//)对变量值里的字符串作替换
${fname/aa/folder} 将第一个 aa 替换为 folder:/folder1/aa2/aa3/dd.ee.txt
${fname//aa/folder} 将全部 aa 替换为 folder:/folder1/folder2/folder3/dd.ee.txt

使用井号(#)计算字符串的长度: ${#string}
echo ${#fname} :22

bash数组的使用:

定义数组: arr=(a b c d)
${arr[@]} 和 a r r [ ∗ ] 相 同 , 都 是 返 回 整 个 数 组 , 包 括 四 个 元 素 。 通 过 中 括 号 及 下 表 获 取 其 中 的 某 一 个 元 素 : {arr[*]} 相同,都是返回整个数组,包括四个元素。 通过中括号及下表获取其中的某一个元素: arr[]{arr[0]} 得到 a (第一个元素),${arr[1]} 第二个…
使用井号(#)计算数组的长度:${#arr[@]} 或 ${#arr[*]} => 4
(使用井号计算长度时,若参数为字符串则返回字符串的长度,若参数为数组则返回数组中元素的个数。)

2、$() 与 ``的作用相同,都是用来运行命令的
例如: echo echo hello 与 echo $(echo hello) 都是打印出hello。

需要注意的一点是有的shell是不支持$()的,而``则可以在所有的unix shell中使用。

3、$[] 和 $(()) 都是用来进行整数运算的
在$[] 和 $(())中进行算数运算时,变量前加不加$符号是一样的:

a=10;b=20;

echo $((a+b))

echo $[a+b]

echo $(($a+$b))

echo $[$a+$b]

以上四个的结果都是30。

$(()) 还可以将不同进制(如二进制、八进位、十六进制)的值转为十进制: $((BS#number)),BS为进制,number为数值。

例如:echo $((16#2b)) => 43 (16进制转十进制)

4、[] 主要用于字符串比较和整数比较
字符串比较时可用 == 和 != ,而整数比较时要使用 (-eq:等于;-ne:不等于;-gt:大于;-lt :小于;-ge:大于等于;-le:小于等于;)。

5、(())及[[]] 都是 [] 的加强版,在比较整数时可直接使用操作符(&&、||、<、>)

原文链接:https://blog.csdn.net/qq_23867503/article/details/94006482

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值