2016-11-30 7 views
0

Ich versuche, all diese beiden Funktionen gleichzeitig zu tun,Wie kann zugleich all diese beiden Funktionen tun (bash, Rohr)

xcodebuild || exit 

und

xcodebuild | tee xcodebuild.log | xcpretty 

in einer Skriptdatei,

build.sh 

Jetzt mache ich es so, aber der letzte Befehl 'exit' funktioniert nicht.

xcodebuild | tee xcodebuild.log | xcpretty || exit 

Ich erwarte, dass der Befehl ‚xcodebuild‘, nicht nur Protokolle in eine Datei drucken kann, kann aber auch ‚exit‘ meine Skript-Datei, wenn es Fehler.

Wenn mir jemand einen Hinweis in die richtige Richtung geben könnte, wie soll ich es tun, würde es wirklich geschätzt werden.

AktualisiertEs funktioniert für mich:

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

Antwort

0

| - ist Rohr, so wird der Ausgang auf der LHS Eingang des RHS (LHS = linke Seite des Symbols)

; - nächster Befehl wird unabhängig von dem Exit-Status des vorherigen Befehls

& & läuft - bedeutet RHS Befehl wird nur ausgeführt, wenn LHS Exit-Status von 0, die den Erfolg

bedeutet || - ist das Gegenteil von direkt über

Dies sind alle seriellen Befehle.

Paralell Lauf mit mpi geschehen ist, oder zumindest Fäden

Ausfahrt wurde Verlassen nicht, weil xcpretty SUCCESS zurückkehrt, obwohl Sie die Bedingung hängen wollten Ihre Hilfe xcodebuild

0

Wenn ich Ihre Anforderung richtig verstehen, können Sie in den Hintergrund schicken Sie es dort in einer Subshell am Laufen zu halten, und halten Sie die andere in der Vordergrund (je nach unserem Bedarf können Sie diesen einen Hintergrund senden):

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

Oder Sie ein echtes Multi-Processing-Tool wie GNU parallel verwenden können.

+0

danke, ich habe meine aktualisiert Frage – Chihpin

Verwandte Themen