J'ai un problème avec la lecture de ce paramètre ci-dessous:
Je ne comprends pas le but de cette utilisation
$(basename "$0")
d'où vient-il${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$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.${BINARY%/*}
est expliqué dans Expansion des paramètres de shell
${parameter%word}
${parameter%%word}
leword
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 deparameter
, alors le résultat de l'expansion est la valeur deparameter
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")