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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
}