Je voudrais envoyer le résultat d'une série de commandes à une variable:état du tuyau après la substitution de commande
variable=$(a | few | commands)
Cependant, la substitution de commande remet à zéro PIPESTATUS
, donc je ne peux pas vérifier où il a mal tourné après coup. Une solution serait d'utiliser mktemp
et mettre le résultat là temporairement:
variable_file=$(mktemp) || exit 1
a | few | commands > $variable_file
exit_codes="${PIPESTATUS[*]}"
variable=$(<$variable_file)
Y at-il une solution plus élégante?
Ceci est une bonne question en effet. Je pense qu'il n'y a pas de meilleure solution que la vôtre, j'espère que quelqu'un me prouve mal ;-) Vous connaissez probablement "set -o pipefail", mais de toute façon c'est (plus ou moins) orthogonal à votre question. – tokland
Ok maintenant je suis intrigué parce que je fais de la même façon que vous ... et cela fonctionne ... mais s'il y a quelque chose de plus élégant ... laissez-moi l'avoir ... – Cipi
Voir cette [question] (http://stackoverflow.com/questions/3450960/using-xargs-to-assign-stdin-to-a-variable) pour plus d'idées. Voir aussi [ici] (http://stackoverflow.com/questions/2413166/bash-redirect-and-append-stdout-and-stderr-to-file-and-terminal). –