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

时间:2011-06-18 02:56:14

标签: bash scripting

我正在尝试了解测试脚本,其中包括以下部分:

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

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

1 个答案:

答案 0 :(得分:84)

它被称为Parameter Expansion。请查看this page和网站的其余部分。

${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