我正在审查我的一些旧代码并遇到了这种语法:
extractDir="${downloadFileName%.*}-tmp"
Run Code Online (Sandbox Code Playgroud)
我找到的唯一信息是指一个命令列表,但这只是一个变量.这个花括号语法在bash中意味着什么?
Jon*_*ler 34
在这种情况下,它是参数替换.
的${variable%.*}表示法是指取的值$variable,剥离所述图案.*从所述值的尾-助记符:百分比具有在尾一个"T" -和得到的结果.(相比之下,${variable#xyz}意味着xyz从变量值的头部移除- 助记符:哈希在头部有一个'h'.)
鉴于:
downloadFileName=abc.tar.gz
Run Code Online (Sandbox Code Playgroud)
评估extractDir="${downloadFileName%.*}-tmp"产生相当于:
extractDir="abc.tar-tmp"
Run Code Online (Sandbox Code Playgroud)
双重替代符号%:
extractDir="${downloadFileName%%.*}-tmp"
Run Code Online (Sandbox Code Playgroud)
会产生相当于:
extractDir="abc-tmp"
Run Code Online (Sandbox Code Playgroud)
该%%装置取出最长可能的尾; 相应地,##意味着移除最长的匹配头.
| 归档时间: |
|
| 查看次数: |
9833 次 |
| 最近记录: |