什么’cd ${0%/ *}’在bash中意味着什么?

前端之家收集整理的这篇文章主要介绍了什么’cd ${0%/ *}’在bash中意味着什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一个 git commit,用这个魔术变量替换cd ${0%/ *}来清理一些readlink和dirname命令.

bash如何解释它?

这里的%称为模式匹配运算符.

学习Bash Shell书中的一句话:

模式匹配运算符的经典用法是剥离路径名的组件,例如目录前缀和文件名后缀.考虑到这一点,这是一个显示所有运算符如何工作的示例.假设变量路径的值为/home/cam/book/long.file.name;然后:

Expression         Result                                Comments
${path##/*/}                      long.file.name   ## takes out longest matched substring from the front
${path#/*/}              cam/book/long.file.name   # takes out shortest matched substring from the front
$path              /home/cam/book/long.file.name   
${path%.*}         /home/cam/book/long.file        % takes out shortest matched substring from the rear
${path%%.*}        /home/cam/book/long             %% takes out longest matched substring from the rear

这些可能很难记住,所以这里有一个方便的助记符设备:

>匹配前面因为数字符号在数字之前;
>%匹配后方,因为百分号符合数字.

在您的特定情况下,0是我的示例中路径的对应部分,因此您应该知道它.

如果$0是/home/chj/myfile.txt,cd ${0%/ *}将扩展为cd / home / chj,即剥离“文件”部分.

我理解你提出这个问题的冲动,因为如果没有几个小时深入挖掘一本Bash书,就很难找到答案.

猜你在找的Bash相关文章