56 votes

Obtenir le code de sortie pour la commande dans bash/ksh

Je veux écrire du code comme ceci :

 command="some command"

safeRunCommand $command

safeRunCommand() {
   cmnd=$1

   $($cmnd)

   if [ $? != 0 ]; then
      printf "Error when executing command: '$command'"
      exit $ERROR_CODE
   fi
}

Mais ce code ne fonctionne pas comme je le souhaite. Où j'ai fait une erreur ?

7voto

sehe Points 123151

Essayer

 safeRunCommand() {
   "$@"

   if [ $? != 0 ]; then
      printf "Error when executing command: '$1'"
      exit $ERROR_CODE
   fi
}

3voto

Priyank Bhatnagar Points 738

Il devrait être $cmd au lieu de $($cmd) . Fonctionne très bien avec ça sur ma boîte.

Edit : votre script ne fonctionne que pour les commandes à un mot, comme ls. Cela ne fonctionnera pas pour "ls cpp". Pour que cela fonctionne, remplacez cmd="$1"; $cmd par "$@" . Et, n'exécutez pas votre script en tant que command="some cmd"; safeRun command , exécutez-le en tant que safeRun some cmd .

De plus, lorsque vous devez déboguer vos scripts bash, exécutez-les avec l'indicateur '-x'. [bash -x s.sh].

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X