Что означает ${0%/*} в скрипте bash?
Я пытаюсь понять тестовый скрипт, который включает в себя следующий сегмент:
SCRIPT_PATH=${0%/*}
if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then
cd $SCRIPT_PATH
fi
Что это ${0%/*}
стоять за? Спасибо
1 ответ
Это называется Parameter Expansion
, Взгляните на эту страницу и остальную часть сайта.
Какие ${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