我试图了解一个测试脚本,其中包括以下部分:
SCRIPT_PATH=${0%/*}
if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then
cd $SCRIPT_PATH
fi
Run Code Online (Sandbox Code Playgroud)
这${0%/*} 代表什么?谢谢
c00*_*ter 94
它被称为Parameter Expansion.看一下这个页面和网站的其余部分.
${0%/*}它是什么,它在从结尾删除字符串后缀后扩展了参数0(这是调用脚本的路径)中包含的值/*.
所以,$0是一样的${0}是像任何其他说法,如.$1你可以写作${1}.正如我所说$0的那样特别,因为它不是一个真正的论点,它始终存在并代表脚本的名称.参数扩展在{ }- 花括号内工作,%是一种参数扩展.
%/*匹配最后一次出现/并删除*该字符后的任何内容(表示任何内容).看看这个简单的例子:
$ var="foo/bar/baz"
$ echo "$var"
foo/bar/baz
$ echo "${var}"
foo/bar/baz
$ echo "${var%/*}"
foo/bar
Run Code Online (Sandbox Code Playgroud)