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