对不起,如果这是一个愚蠢的问题,但我搜索它没有成功。
第二行到底是做什么的?:
#!/bin/sh
cd ${0%/*} || exit 1
我知道第一个是 shebang,第二个尝试更改目录,但令人困惑的部分是${0%/*}
.
你能解释一下第二行吗?
对不起,如果这是一个愚蠢的问题,但我搜索它没有成功。
第二行到底是做什么的?:
#!/bin/sh
cd ${0%/*} || exit 1
我知道第一个是 shebang,第二个尝试更改目录,但令人困惑的部分是${0%/*}
.
你能解释一下第二行吗?
${0}
是脚本的第一个参数,即脚本名称或路径。如果您将脚本启动为path/to/script.sh
,那么${0}
正是该字符串:path/to/script.sh
。该
%/*
部分修改 的值${0}
。这意味着:取所有字符,直到/
后面跟着一个文件名。在上面的例子中,${0%/*}
将是path/to
.你可以在你的 shell 上看到它的作用:
Sh 支持许多其他类型的“参数替换”。例如,这里是如何使用文件名而不是路径:
一般来说,
%
和%%
strip后缀,while#
和##
strip前缀。您可以阅读有关参数替换的更多信息。