2017-09-28 1 views
0

Ich habe eine if-Anweisung, die viele Male in meinem Skript verwendet wird:Wie eine if-Anweisung auf eine Variable in bash zuweisen?

if [[ $? -ne 0 ]]; then 
     echo [$JOB_NAME] failed. 
     exit 1 
    fi 

ist es möglich, eine Variable, und weisen Sie diese Anweisung, um es zu definieren, und dann rufen jedes Mal, wenn ich ti brauchen?

Beispiel:

echo [$JOB_NAME] extracting manifests... 
    unzip -o ZIP_FILE "*.yml" 
    # Push the app to CF 
    cf push -f $MANIFEST_FILE -p ZIP_FILE $NEW_APP 
    if [[ $? -ne 0 ]]; then 
     echo [$JOB_NAME] failed. 
     exit 1 
    fi 
+4

Normalerweise weisen Sie Variablen Werte und Code-Snippets Funktionen zu. – mouviciel

Antwort

2

Wie in den Kommentaren erwähnt, sollte dies eine Funktion sein, die wie folgt geschrieben werden:

ensure_success() { 
    if [[ $# -eq 0 ]]; then 
     echo "no command passed to ensure_success." 
    elif ! "[email protected]"; then 
     echo "[$JOB_NAME] failed." 
     exit 1 
    fi 
} 

"[email protected]" erweitert, um die vollständige Liste der Argumente übergeben zur Funktion. Ich habe in den Kommentaren eine Überprüfung basierend auf Inians Vorschlag hinzugefügt, um sicherzustellen, dass mindestens ein Argument an die Funktion übergeben wird.

Dies kombiniert den Befehl ausgeführt wird und den Fehlercode überprüft, so können Sie es gerne verwenden:

ensure_success command arg1 arg2 arg3 

So, basierend auf dem Beispiel in Ihrer Frage wäre es:

ensure_success cf push -f "$MANIFEST_FILE" -p ZIP_FILE "$NEW_APP" 

Die Zitate sind kostenlos.

Ich bin mir nicht sicher, wo $JOB_NAME definiert ist, aber vermutlich ist es eine globale.

+1

Dies schlägt meine Antwort ('++') ich komponierte, aber mit nur einer kleinen Verbesserung vorschlagen, kann prüfen, Null Argumente allein in der Funktion wie '((" $ # "> 0)) || {printf "weniger Argumente erhalten \ n"; Ausgang 1; } ' – Inian

+0

@tom nicht wichtig $ JOB_NAME, ich verstehe nicht, warum area_success Befehl arg1 arg2 arg3, weil meine Verwendung ist wie das Beispiel, das ich in der Frage (siehe Update) – Foudel

+0

@Foudel siehe mein Update –

Verwandte Themen