exécuter des commandes complexes dans un script bash
Bonjour,
J'ai écrit une fonction[1] bash qui :
- affiche le nom de la commande à lancer
- lance la commande
- affiche un message pour dire si la commande a réussi ou échoué
Elle s'utilise comme ça :
Code:
1 2 3 4 5 6
| COMMAND="sleep 1"
execcmd
COMMAND="echo toto tata tutu"
execcmd
COMMAND="sudo iwconfig ra0 essid \"Wi-Fi De Chez Moi\""
execcmd |
Le problème c'est que quand la commande est complexe, il arrive parfois que la commande ne soit pas correctement exécutée.
Dans mon exemple ci-dessus, je commence par appeler sleep (pour faire une pause de 1 seconde), puis j'appelle echo (pour afficher du texte) et enfin j'appelle iwconfig pour changer l'ESSID de ma carte Wi-Fi.
Les deux premières commandes passent bien car elles sont simples, mais la 3ème pose problème.
Regardez par vous même le résultat dans la console :
Code:
1 2 3 4 5 6
| $ ./execcmd.sh
executing the 'sleep 1' command... Done.
executing the 'echo toto tata tutu' command... toto tata tutu
Done.
executing the 'sudo iwconfig ra0 essid "Wi-Fi De Chez Moi"' command... iwconfig: unknown command "De"
Failure. |
Donc ma fonction ne marche pas à tous les coups...
Est-ce que vous savez ce que je dois changer dans le code de ma fonction ?
Merci.
[1]
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/bin/bash
VERBOSE=1
QUIET=0
function execcmd()
{
echo -n "executing the '${COMMAND}' command... "
if test ${VERBOSE} -eq 0; then
${COMMAND} 1>/dev/null 2>&1
else
${COMMAND}
fi
if test $? -ne 0 -a ${QUIET} -eq 0; then
echo "Failure."
exit 1
else
echo "Done."
fi
} |