1 votes

Attendre la fin de la commande précédente en utilisant tee

J'utilise tee comme suit :

some commands | tee -a >(command1 >> file) >(command2 >> file) >(command3 >> file)

Comment puis-je retarder l'exécution de la commande 2 jusqu'à la fin de la commande 1, et de même pour la commande 3 et la commande 2 ? J'ai essayé d'utiliser wait comme ça, mais ça n'a pas marché :

some commands | tee -a >(command1 >> file) >(wait command2 >> file) >(wait command3 >> file)

1voto

On dirait qu'il manque de la logique et qu'il y a des erreurs de syntaxe.

tee -a passera la sortie vers STDOUT et l'ajoutera simultanément, il n'est pas nécessaire d'utiliser la fonction >

Et pourquoi tant de redirections de sortie ? Vous devriez peut-être utiliser && ou ;

Je ne suis pas sûr des commandes que vous exécutez, mais ce qui suit pourrait vous donner au moins une idée.

some commands | tee -a file; command1 >> file; command2 >> file; command3 >> file 

some commands | tee -a file affichera STDOUT et écrira dans le fichier, indépendamment du code de sortie, parce qu'il y a ; suivant command1 >> file sera exécutée, puis la commande2, puis la commande3 et ainsi de suite.

some commands | tee -a file; command1 | tee -a file; command2 | tee -a file; command3 | tee -a file 

Ici, chaque commande est divisée par ; seront exécutées dans l'ordre de gauche à droite et chaque commande sera affichée dans STDOUT.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X