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

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

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

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

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

${0%/*}是做什么的,它从参数0 (它是调用脚本的path)中删除string/*后缀后面的值。

所以, $0${0}是一样的,就像任何其他的参数一样。 $1 ,你可以写成${1} 。 正如我所说的$0是特殊的,因为它不是一个真正的参数,它总是在那里,代表脚本的名字。 参数扩展在{ } – 大括号内起作用, %是一种参数扩展。

%/*匹配%/*的最后一次出现,并在该字符后面删除任何内容( *表示任何内容)。 看看这个简单的例子:

 $ var="foo/bar/baz" $ echo "$var" foo/bar/baz $ echo "${var}" foo/bar/baz $ echo "${var%/*}" foo/bar