J'essaie de comprendre un script de test, qui comprend le segment suivant:
SCRIPT_PATH=${0%/*}
if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then
cd $SCRIPT_PATH
fi
Que fait le ${0%/*}
représenter? Merci
On l'appelle Parameter Expansion
. Jetez un œil à cette page et au reste du site.
Quelle ${0%/*}
le fait, il développe la valeur contenue dans l'argument 0 (qui est le chemin qui a appelé le script) après avoir supprimé la chaîne /*
suffixe à la fin de celui-ci.
Donc, $0
est le même que ${0}
qui est comme tout autre argument, par exemple. $1
que vous pouvez écrire comme ${1}
. Comme j'ai dit $0
est spécial, car ce n'est pas un argument réel , il est toujours là et représente le nom du script. L'extension des paramètres fonctionne dans le {
}
- accolades et %
est un type d'extension de paramètres.
%/*
correspond à la dernière occurrence de /
et supprime tout (*
signifie n'importe quoi) après ce caractère. Jetez un œil à cet exemple simple:
$ var="foo/bar/baz"
$ echo "$var"
foo/bar/baz
$ echo "${var}"
foo/bar/baz
$ echo "${var%/*}"
foo/bar