我刚刚在makefile中看到"$$ {x %%*}",这意味着sh中的"$ {x %%*}".为什么用这种方式写?
determine_sum = \
sum=; \
for x in sha1sum sha1 shasum 'openssl dgst -sha1'; do \
if type "$${x%% *}" >/dev/null 2>/dev/null; then sum=$$x; break; fi; \
done; \
if [ -z "$$sum" ]; then echo 1>&2 "Unable to find a SHA1 utility"; exit 2; fi
checksums.dat: FORCE
$(determine_sum); \
$$sum *.org
Run Code Online (Sandbox Code Playgroud)
另外,如何${x%% *}在Google中搜索?
${x%% *}是删除变量中除第一个单词之外的所有内容的好方法$x。也就是说,给定一个 text XXX YYY ZZZ,此语法将删除第一个空格之后的所有内容。
一些例子:
$ x="aaa abbb"
$ echo ${x%% *}
aaa
$ x="aaa abbb bccc defasdfs"
$ echo ${x%% *}
aaa
Run Code Online (Sandbox Code Playgroud)
它相当于:
$ x="aaa abbb bccc defasdfs"
$ echo $x | awk '{print $1}'
aaa
Run Code Online (Sandbox Code Playgroud)
为了确保清楚,让我们再举一个例子:
$ x="aaa abbb_bccc_defasdfs"
$ echo ${x%%_*}
aaa abbb
Run Code Online (Sandbox Code Playgroud)
我们查找第一个_字符,然后删除从该点到末尾的字符。
要查看更多这些有趣的命令,您可以查看参考卡#String Operations。
关于谷歌的问题,是的,这些字符无法通过他们的搜索引擎搜索到。相反,我建议您使用SymbolHound。
例如,查询 ${x%% *}会显示一个有价值的结果。
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |