BASH: Bedingter Ausdruck

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

BASH: Bedingter Ausdruck

Beitrag von lemak » 30.07.2009 19:34:25

Hallo,

in C gibt es Bedingte Ausdrücke:

Code: Alles auswählen

exp1 ? exp2 : exp3
Hat die BASH sowas auch?

i

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Re: BASH: Bedingter Ausdruck

Beitrag von SubOptimal » 30.07.2009 20:06:42

Hi,

so direkt nicht.
Nur in der Art

Code: Alles auswählen

if [ Bedingung ]
then
  echo "basst scho"
else
  echo "na, so net"
fi
SubOptimal

Benutzeravatar
tschaefer
Beiträge: 138
Registriert: 03.09.2004 09:51:48
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Garmisch-Partenkirchen, Germany
Kontaktdaten:

Re: BASH: Bedingter Ausdruck

Beitrag von tschaefer » 30.07.2009 20:29:13

Hi,

doch die Bash kann das, siehe Manpage

Code: Alles auswählen

man bash
/^ *ARITHMETIC
Gruß Tobias
Debian bullseye
dwm-6.4
Linux bullseye 6.1.0-17-amd64
CPU AMD Ryzen 7 5700U
Memory total 24576M
Screenshot: http://sau.frubar.net/39339

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: BASH: Bedingter Ausdruck

Beitrag von lemak » 30.07.2009 21:24:32

Ich Blicks nicht. Kann mal jemand die Beispiele unten verbessern?

Code: Alles auswählen

VAR="string"
echo "VAR is " $(( -z $VAR ? "zero" : $VAR ))
Rest gelöscht ...

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: BASH: Bedingter Ausdruck

Beitrag von detix » 02.08.2009 12:31:08

großartig helfen kann ich nicht, nur so wie es aussieht funktioniert das ausschl. mit
Zahlen als Variablen, in C gibt es ein Beispiel mit Strings bei dem printf benutzt wird,
ob das auch mit der bash geht...?
Listing 22.56 (ein wenig runterblättern)
Ein paar bash Bsp. mit Zahlen:

Code: Alles auswählen

x=11; echo 'Ergebnis=' $(( x<=10 ? 22 : 33 ))
Ergebnis= 33
x=11; echo 'Ergebnis=' $(( x<=10 ? 22 : x ))
Ergebnis= 11
x=11; echo 'Ergebnis=' $(( x<=11 ? 22 : x ))
Ergebnis= 22
x=11; echo 'Ergebnis=' $(( x<=11 ? x : 33 ))
Ergebnis= 11
x=11; echo 'Ergebnis=' $(( x==11 ? 22 : 33 ))
Ergebnis= 22
x=11; echo 'Ergebnis=' $(( x!=11 ? 22 : 33 ))
Ergebnis= 33
Jeder Versuch hier Einzel- oder Doppelticks einzufügen endet mit einem syntax error!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: BASH: Bedingter Ausdruck

Beitrag von lemak » 02.08.2009 13:26:04

Danke.
Ich habe nun so etwas gebastelt:

Code: Alles auswählen

echo "VAR is " $( [ ! -z $VAR  ] && echo $VAR )
Für meinen Fall reicht es so.
Edit: zb sowas

Code: Alles auswählen

VAR="--exec echo {}\;"
find ~ -name ".*" $( [ ! -z $VAR ] && echo $VAR )
Nun möchte den Gedanken doch zuende Schreiben:

so könnte man unter /etc/*
VAR="..."
ablegen
und in /usr/{bin/*,local/*} mit
. /etc/*
einlesen (als Konfiguration)

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: BASH: Bedingter Ausdruck

Beitrag von detix » 02.08.2009 14:16:32

Naja, deine Lösung hat mit der Ursprungsfrage nicht mehr viel gemein,
bin immernoch gespannt auf die Antwort und ein paar Beispiele von @Outl4w
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: BASH: Bedingter Ausdruck

Beitrag von lemak » 02.08.2009 14:21:11

Stimmt :)

Sollte es mit Bedingten Ausdrücken und Zeichenketten doch funktionieren - wäre es für mich auch besser, so könnte man einen Default-Wert geschickt unterbringen...

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Re: BASH: Bedingter Ausdruck

Beitrag von goeb » 02.08.2009 17:46:09

Wenn es dir nur um einen Default-Wert für Variablen geht:
man bash hat geschrieben:${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.
Beispiel:

Code: Alles auswählen

var1=${var1:-default_value}
weist $var1 den Wert default_value zu wenn $var1 noch nicht gesetzt ist, ansonsten den Wert von $var1.

MfG, gœb

Antworten