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 :
Le problème c'est que quand la commande est complexe, il arrive parfois que la commande ne soit pas correctement exécutée.
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
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 :
Donc ma fonction ne marche pas à tous les coups...
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.
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 }
Partager