2012-02-25 3 views
2

J'essaie de lire un script shell avec lequel je n'ai pas travaillé auparavant ... Que fait ce code?Que fait ce fragment de script shell?

# Setup some command defaults (can be overriden by the config) 
MYSQL=${MYSQL:-`which mysql`} 
MYSQLDUMP=${MYSQLDUMP:-`which mysqldump`} 
PHP=${PHP:-`which php`} 

Je sens qu'il détermine l'emplacement de php, mysql et mysqldump si la variable est pas déjà définie. Est-ce exact?

+2

http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion –

Répondre

2

Si la variable est indéfinie ou est la chaîne vide, elle la remplace par le résultat de la commande which afin qu'elle serve de valeur par défaut.

Side note, vous pouvez le rendre plus robuste en utilisant à la place type -P mysql ou hash mysql de which mysql puisque les mises en œuvre de which peuvent différer.

voir http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html et Check if a program exists from a Bash script

+1

La première phrase devrait commencer « Si la variable est définie ou est la chaîne vide "puisque l'opérateur est ': -' plutôt que '-'. –

+0

fixe, merci –