bash: mehrere Variablen in einem Rutsch prüfen (erledigt)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ren22

bash: mehrere Variablen in einem Rutsch prüfen (erledigt)

Beitrag von ren22 » 27.02.2019 16:46:59

Hallo,

wie kann man unter Bash4 mehrere Variablen in einem Rutsch testen ob sie überhaupt einem Inhalt haben?
Also normaler weise schreibt man das ja so:

Code: Alles auswählen

if [ -z $variable ]; then
    echo "bla bla"
fi
wenn ich jetzt aber sagen wir "varx","vary","varz" habe, würde ich gerne nicht jedesmal wieder eine if Abfrage pro Variable schreiben wollen.
Wie kann man die drei Variablen in einem rutsch prüfen mit "for", "while", "until" und nach Möglichkeit auch ausgeben welche Variable leer ist !?
Danke
Zuletzt geändert von ren22 am 27.02.2019 20:52:13, insgesamt 1-mal geändert.

Benutzeravatar
MegaV0lt
Beiträge: 173
Registriert: 21.11.2011 11:16:07
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: bash: mehrere Variablen in einem Rutsch prüfen

Beitrag von MegaV0lt » 27.02.2019 17:12:41

So:

Code: Alles auswählen

  if [[ -z "VAR1" && -z "VAR2" ]] ; then 
Wobei && "und" und || "oder" bedeuted
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: bash: mehrere Variablen in einem Rutsch prüfen

Beitrag von heisenberg » 27.02.2019 17:19:33

Code: Alles auswählen

vars=(log_level config_file email_address)

for v in ${vars[@]} ;do 
   eval [ -z \"\$$v\" ] && echo $v is empty
done

ren22

Re: bash: mehrere Variablen in einem Rutsch prüfen

Beitrag von ren22 » 27.02.2019 20:51:14

Vielen Dank ;-)

mein Lösung schaut jetzt so aus:

Code: Alles auswählen

for v in "$VIDEO_TITLE" "$VIDEO_URL" "$VIDEO_EXTENSION" ;do
    i=$((i+1))
    if [ -z "$v" ]; then
	echo "video-script: Variable: $i is empty"
	exit 0
    fi
done

Antworten