/ / Je ne comprends pas la déclaration du paramètre bash - linux, commande

Je ne comprends pas la déclaration du paramètre bash - linux, commande

J'ai un problème avec la lecture de ce paramètre ci-dessous:

  1. Je ne comprends pas le but de cette utilisation $(basename "$0") d'où vient-il

  2. ${BINARY%/*} semble essayer d’obtenir le chemin du répertoire mais pourquoi exactement besoin d’aimer ça.

DIR_NAME=$(dirname "$0")
FILE_NAME=$(basename "$0")
BINARY=`readlink ${ROOT_DIR}/${DIR_NAME}/${FILE_NAME} -f`
BIN_PATH=${BINARY%/*}

Réponses:

1 pour la réponse № 1
  1. $0 est le chemin du script en cours d'exécution. Alors $(dirname "$0") renvoie le répertoire du script, et $(basename "$0") est le nom du fichier.

  2. ${BINARY%/*} est expliqué dans Expansion des paramètres de shell

${parameter%word}
${parameter%%word}
le word est développé pour produire un motif comme dans l’extension de nom de fichier. Si le motif correspond à une partie finale de la valeur développée de parameter, alors le résultat de l'expansion est la valeur de parameter avec le motif de correspondance le plus court (la casse%) ou le motif de correspondance le plus long (la casse %%) supprimé.

Donc, cela trouve la partie finale de $BINARY qui correspond à /* et le supprime, ce qui retourne la partie répertoire. Cela équivaut à $(dirname "$BINARY")