加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – shell脚本中的##是什么意思

发布时间:2020-12-16 01:51:47 所属栏目:安全 来源:网络整理
导读:在编译脚本时,我遇到了命令do f = ${file ## * /}.我很想知道这行中的##是什么意思.感谢您提前回复 解决方法 在bash中,它删除了前缀模式. 在这里,它基本上为你提供了最后一个/路径分隔符之后的所有内容(通过删除前缀* /,后跟/的任意数量的字符): pax fspec=
在编译脚本时,我遇到了命令do f = ${file ## * /}.我很想知道这行中的##是什么意思.感谢您提前回复

解决方法

在bash中,它删除了前缀模式.

在这里,它基本上为你提供了最后一个/路径分隔符之后的所有内容(通过删除前缀* /,后跟/的任意数量的字符):

pax> fspec=/path/to/some/file.txt

pax> echo ${fspec##*/}   # greedy remove */ at start
file.txt

还有一个单#变种,它是非贪婪的匹配和后缀的等价物:

pax> echo ${fspec#*/}    # non-greedy remove */ at start
path/to/some/file.txt

pax> echo ${fspec%%/*}   # greedy remove /* at end

pax> echo ${fspec%/*}    # non-greedy remove /* at end
/path/to/some

## * /和%/ *大致相当于你从basename和dirname获得的内容,但是在bash中,所以你不必调用外部程序:

pax> basename $fspec
file.txt

pax> dirname $fspec
/path/to/some

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读