Shell-Skriptzwang wird angehalten, ohne auf den Beendigungscode zu warten

1215
PinoyPal

Ich habe checklick.shauf meiner CentOS-Box ein Shellskript mit folgendem Inhalt geschrieben:

#!/bin/sh  # # description: check link through rtmpdump #  . /etc/rc.d/init.d/functions  DUMPUTIL=/usr/bin/rtmpdump "$DUMPUTIL" -B 1 -r "$1" -o /tmp/rtmp-checker.log && echo_success || echo_failure 

und ausgeführt von

./checklink.sh rtmp://tv2.globisoft.net/live/tv2 

Nun aus der folgenden Ausgabe:

Shell-Skriptzwang wird angehalten, ohne auf den Beendigungscode zu warten

Ich muss wissen, wie das Beenden des Skripts erzwungen werden soll, wenn das Protokoll gedruckt wird, ERROR: RTMP_ReadPacket, failed to read RTMP packet headerda ich das Skript von der execnativen PHP- Funktion aus aufrufen und für immer auf den Exitcode warten muss, aber das Skript gibt den Exitcode nicht zurück.

0
Haben Sie "exit 1" oder den gewünschten Exit-Code in die "Funktion echo_failure" geschrieben? Hastur vor 9 Jahren 0

1 Antwort auf die Frage

0
Gavyn

Wie wäre es damit, jede Zeile der Befehlsausgabe zu testen?

#!/bin/bash  while read -r line; do echo "$line"  if [[ "$line" == "TEST" ]]; then exit fi done < <(cat testfile) 

Das obige liest die Ausgabe eines gegebenen Befehls (in diesem Fall "cat testfile") und bestätigt dann das Ergebnis. Es wird nach einer Zeile gesucht, die "TEST" entspricht, und wird beendet, wenn eine Übereinstimmung gefunden wird.