我正在尝试了解测试脚本,其中包括以下部分:
SCRIPT_PATH=${0%/*}
if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then
cd $SCRIPT_PATH
fi
${0%/*}
代表什么?感谢
答案 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