staging.inyokaproject.org

Auslesen KEINER ausgabe eines cmd per Shell-Skript

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

3D_MAMA

Anmeldungsdatum:
1. November 2017

Beiträge: 9

Hey Leute,

ich bin relativ neu im Gebiet Shell-Skript und kenne nur die ganz groben Standardbefehle 😉 Deswegen habe ich folgende Frage und hoffe ihr könnt mir weiterhelfen:

Ich führe in einem Shell-Skript einen cmd aus, welcher keine Nachricht hinterlässt von wegen z.B. "Befehl erfolgreich ausgeführt" oder so. Wie kann ich jetzt im Shell-Skript testen, ob nach diesem Befehl KEINE Antwort erscheint?

Bsp:

Im Skript der befehl "pacmd move-source-output 2 jack_in". Jetzt würde der Source-Output "2" zu "jack_in" verschoben werden. Wenn das schief geht erscheint eine Fehlermeldung, wenn aber alles ohne Probleme läuft erscheint keine Nachricht. Wie kann ich jetzt dem Skript sagen: "Wenn fail dann mache das und das" und "Wenn kein fail dann mache das und das"

Vielen Dank schon mal im Vorraus für eure Hilfe

Mfg 3D_Ma... ja ich weiß, komischer Name xD

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Stichwort exit code... für ganz einfache Ansprüche kannst du mit && und || arbeiten oder eben das gute alte if else oder $? direkt nach dem Befehl anschauen und dann auch verschiedene errorcodes unterschiedlich behandeln (bei jedem Programm anders, in der Manpage nachzuschlagen wann welche Codes zurückgeliefert werden).

$ mkdir foobar && echo OK || echo FAIL
OK
$ mkdir foobar && echo OK || echo FAIL
mkdir: cannot create directory ‘foobar’: File exists
FAIL

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Kommandos und Programme geben oft einen Exitcode zurück, der nicht angezeigt wird, und Erfolg oder Fehler bedeutet.

Man kann das direkt auswerten:

1
cmd && echo Erfolg || echo Fehler 

Eine andere Möglichkeit ist, den Erfolg mit $? abzufragen, und zwar gleich nach dem Kommando:

1
2
cmd ...
erfolg=$?

Nur wenn das nicht geht würde ich darauf zurückgreifen, die Ausgabe auf einen leeren String zu testen:

1
2
3
4
5
6
7
erfolg=$(cmd ...)
if [ -z $erfolg ] 
then
  echo leer 
else
  echo erfolg
fi

Mit "help test" findet man solche Sachen wie -z in der Bash.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

user_unknown schrieb:

Eine andere Möglichkeit ist, den Erfolg mit $? abzufragen, und zwar gleich nach dem Kommando:

1
2
cmd ...
erfolg=$?

Geht auch kürzer: Shell/Tipps und Tricks (Abschnitt „Sinnloses-test“)

Antworten |