Que signifie $ {0% / *} dans un script bash?

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 signifie le ${0%/*} ? Merci

C’est ce qu’on appelle l’ Parameter Expansion . Regardez cette page et le rest du site.

Qu’est-ce que ${0%/*} est, 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 de la fin de celui-ci.

Donc, $0 est identique à ${0} ce qui est comme tout autre argument, par exemple. $1 que vous pouvez écrire comme ${1} . Comme je l’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. Le paramètre Expansion fonctionne dans les accolades { } – et % est un type d’extension de paramètre.

%/* correspond à la dernière occurrence de / et supprime tout ( * signifie n’importe quoi) après ce caractère. Jetez un oeil à cet exemple simple:

 $ var="foo/bar/baz" $ echo "$var" foo/bar/baz $ echo "${var}" foo/bar/baz $ echo "${var%/*}" foo/bar