shell脚本编程(二)${0%/*}代表什么?

 

它叫Parameter Expansion。bash 参数扩展

${0%/*}所做的是,在从参数0(即调用脚本的路径)的末尾删除字符串/*后缀后,扩展参数0中包含的值。

因此,$0与${0}是相同的,这与其他任何论证一样,如$1,你可以把它写成${1}。正如我所说,$0是特殊的,因为它不是真正的论点,它总是存在的,代表脚本的名称。参数扩展在{}大括号内工作,%是参数扩展的一种类型。

%/*匹配/的最后一次出现,并删除该字符之后的任何内容(*表示任何内容)。看看这个简单的例子:

 

1
2
3
4
5
6
7

$ var="foo/bar/baz"
$ echo"$var"
foo/bar/baz
$ echo"${var}"
foo/bar/baz
$ echo"${var%/*}"
foo/bar

还有 OUTDIR=${OUTDIR#*=}    cmd=${OUTDIR%=*} 等形式

 

 

提炼下记忆方式:

${变量名#(##)*分隔符}剔除首个(或最末个即最右端)分隔符左侧字串

${变量名%(%%)分隔符*}剔除首个(或最末个即最左端)分隔符右侧字串

 

${变量名/被替换字串/替换字串} 替换首个匹配

${变量名//被替换字串/替换字串} 替换所有匹配

关于#和%的另一种助记方法:

1.看键盘上的#$%键,#      $      % 

使用#就表明匹配方向是从左向右

使用%就表明匹配方向是从右向左

单个#或单个%表示非贪婪匹配,匹配最短的部分

两个#或两个%表示贪婪匹配,匹配最长的部分

最后,剔除匹配部分。(*和分隔符直接看作匹配模式即可)

 

https://blog.csdn.net/astrotycoon/article/details/78109827

参考

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值