Question

Imaginons que j'ai un script bash, où j'appelle ceci:

bash -c "some_command"
do something with code of some_command here

Est-il possible d'obtenir le code de some_command? Je ne suis pas exécuter some_command directement dans le shell exécutant le script parce que je ne veux pas modifier son environnement.

Était-ce utile?

La solution

$? contiendra le code de retour de some_command comme d'habitude.

Bien sûr, il peut également contenir un code de bash, dans le cas où quelque chose a mal tourné avant que votre commande pourrait même être exécuté (mauvais nom de fichier, ainsi de suite).

Autres conseils

Voici une illustration de $? et la parenthèse mentionnée par sous-shell Paggas et Matti :

$ (exit a); echo $?
-bash: exit: a: numeric argument required
255
$ (exit 33); echo $?
33

Dans le premier cas, le code est une erreur de bash et dans le second cas, il y a le code de sortie de exit.

Vous pouvez utiliser la variable $?, consultez la documentation bash pour cela, il stocke l'état de sortie de la dernière commande.

En outre, vous voudrez peut-être vérifier les blocs de commande support de style de bash (par exemple comm1 && (comm2 || comm3) && comm4), ils sont toujours exécutées dans un sous-shell donc pas modifier l'environnement actuel, et sont plus puissants aussi bien!

EDIT: Par exemple, lors de l'utilisation () blocs -style par rapport à bash « commande » -c, vous n'avez pas à vous soucier de sortir des chaînes d'arguments avec des espaces, ou toute autre syntaxe shell spéciale. Vous utilisez directement la syntaxe shell, il est une partie normale du reste du code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top