shell中的括号

shell中括号作用

()

  • 命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。

$()

  • $( )与(反引号)都是用来作命令替换的。

${}

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

  • 特殊功能

    • 截断功能

假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt
${file#/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##
/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##
.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/
}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.
}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:# 是去掉左边(在鉴盘上 # 在 $ 之左边)
% 是去掉右边(在鉴盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
${file#/}(不加*号)表示只去掉最左边的/

  • 字符串截取

      		- 假设有变量 var=http://www.aaa.com/123.htm.
      		- # 号截取,删除第一个/左边字符,保留右边字符。
    
      			- echo ${var#*//}
    
      				- 结果是 :www.aaa.com/123.htm
    
      		- ## 号截取,删除最后一个/左边字符,保留右边字符。
    
      			- echo ${var##*/}
    
      				- 结果是 123.htm
    
      		- %号截取,删除右边字符,保留左边字符
    
      			- echo ${var%/*}
    
      				- 结果是:http://www.aaa.com
    
      		- %% 号截取,删除右边字符,保留左边字符
    
      			- echo ${var%%/*}
    
      				- 结果是:http:
    
      		- 从左边第几个字符开始,及字符的个数
    
      			- echo ${var:0:5}
    
      				- 结果是:http:
    
      		-  从左边第几个字符开始,一直到结束。
    
      			- echo ${var:7}
    
      				- www.aaa.com/123.htm
    
      		- 从右边第几个字符开始,及字符的个数
    
      			- echo ${var:0-7:3}
    
      				- 结果是:123
    
      		- 从右边第几个字符开始,一直到结束。
    
      			- echo ${var:0-7}
    
      				- 结果是:123.htm
    
    • 字符串提取

      • ${file:0:5}    提取最左边的 5 个字节    /dir1
        ${file:5:5}    提取第 5 个字节右边的连续 5 个字节 /dir2
    • 替换

      • Subtopic 1

        • ${file/dir/path} 将第一个 dir 提换为 path           /path1/dir2/dir3/my.file.txt
        • ${file//dir/path}     将全部 dir 提换为 path            /path1/path2/path3/my.file.txt
    • 根据状态为变量赋值

      • 参数替换
        在这里插入图片描述
    • 参考

$(())

  • $(( ))用于整数运算

  • 进制转换

    • $(( ))可以将其他进制转成十进制数显示出来。用法如下:
      echo $((N#xx))
      其中,N为进制,xx为该进制下某个数值,命令执行后可以得到该进制数转成十进制后的值。
[root@localhost ~]# echo $((2#110))
6
[root@localhost ~]# echo $((16#2a))
42
[root@localhost ~]# echo $((8#11))
9

XMind - Trial Version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值