bash脚本中$ {0%/ *}的含义是什么?

我想了解一个测试脚本,其中包括以下部分:

SCRIPT_PATH=${0%/*}
if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then 
    cd $SCRIPT_PATH
fi

${0%/*}代表什么? 谢谢


它被称为Parameter Expansion 。 看看这个页面和网站的其他部分。

${0%/*}所做的是,它从参数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
链接地址: http://www.djcxy.com/p/9725.html

上一篇: What is the meaning of ${0%/*} in a bash script?

下一篇: Get the name of the directory where a script is executed