GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser Ts sans perdre la valeur de sortie ?

Cette question a déjà des réponses ici :Obtenir le statut de sortie du processus qui est redirigé vers un autre

(16 réponses)
Fermé l'année dernière.

J'ai un script de construction qui exécute une longue commande qui produit beaucoup de sortie qui ressemble à ceci :

./compile

Afin de dépanner les performances de compilation, je souhaite utiliser ts (de moreutils) qui préfixe chaque ligne de sortie avec un horodatage. J'ai donc mis à jour mon script comme ceci :

bash -c "./compile | ts '[%Y-%m-%d %H:%M:%S]'"

Cela fonctionne, mais maintenant la valeur de sortie est toujours , événement lors de la compile échoue (je pense, parce que ts sort sans erreur).

Comment puis-je mettre à jour mon script pour renvoyer compile code de sortie lors de l'utilisation de ts ?

Réponse acceptée :

Puisque vous utilisez Bash, vous pouvez utiliser son $PIPESTATUS qui est un tableau contenant les différents codes de sortie des commandes d'un pipeline :

bash -c './compile | ts "[%Y-%m-%d %H:%M:%S]"; exit "${PIPESTATUS[0]}"'

zsh a une fonctionnalité similaire mais utilise le $pipestatus tableau à la place (rappelez-vous également zsh les tableaux sont numérotés à partir de 1 , pas ).


Linux
  1. Pourquoi une fonction main sans instruction return renvoie-t-elle la valeur 12 ?

  2. Comment sortir de 'screen' sans taper 'exit' ?

  3. comment utiliser kill SIGUSR2 dans bash?

  4. Comment puis-je utiliser grep pour correspondre mais sans imprimer les correspondances ?

  5. Puis-je utiliser une commande (telle que tree) sans l'installer à l'échelle du système ?

Comment utiliser ISPConfig et Seafile sans modifications manuelles des fichiers

Comment utiliser TeamViewer sur Ubuntu 20.04 Linux sans installation

Utilisez les conteneurs Docker Stop sans tout gâcher !

Comment utiliser la commande echo sans retour à la ligne

Comment utiliser "yum downloadonly" pour télécharger un package sans l'installer

Utiliser perf dans un conteneur docker sans --privileged