2016-11-30 1 views
0

Je suis en train de faire toutes ces deux fonctions en même temps,peut faire toutes ces deux fonctions en même temps (bash, pipe)

xcodebuild || exit 

et,

xcodebuild | tee xcodebuild.log | xcpretty 

Dans un fichier de script,

build.sh 

Maintenant, je le fais comme ça, mais la dernière commande 'exit' ne fonctionne pas.

xcodebuild | tee xcodebuild.log | xcpretty || exit 

je me attends à la commande « xcodebuild », non seulement peut imprimer les journaux dans un fichier, mais peut aussi la « sortie » de mon fichier script quand il d'erreur.

Si quelqu'un pouvait me donner un indice dans la bonne direction quant à la façon dont je devrais le faire serait vraiment apprécié.

Mise à jourIl fonctionne pour moi:

xcodebuild | tee xcodebuild.log | xcpretty 
if [ "${PIPESTATUS[0]}" != "0" ]; then 
    exit 1 
fi 

Répondre

0

| - est un tuyau, de sorte que la sortie sur le LHS devient une entrée du RHS (LHS = côté gauche du symbole)

; - commande suivante fonctionnera indépendamment de l'état de sortie de la commande précédente

& & - signifie commande RHS exécutera seulement si LHS a le statut de sortie de 0, ce qui signifie le succès

|| - est le contraire de directement ci-dessus

Ci-dessus sont toutes les commandes en série.

course Paralell se fait avec mpi, ou au moins des fils

sortie

n'a pas sortir parce que xcpretty retournait succès, même si vous vouliez accrocher la condition xcodebuild

0

Si je comprends bien votre exigence, vous pouvez envoyer un à l'arrière-plan pour le garder en cours d'exécution dans un sous-shell là, et de garder l'autre en au premier plan (en fonction de nos besoins, vous pouvez envoyer celui-ci à fond aussi):

{ xcodebuild || exit ;} & xcodebuild | tee xcodebuild.log | xcpretty 

Ou vous pouvez utiliser un véritable outil multi-traitement comme GNU parallel.

+0

grâce à votre aide, je l'ai mis à jour mon question – Chihpin