Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
lemak
- Beiträge: 1213
- Registriert: 09.11.2007 13:25:57
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Beitrag
von lemak » 30.07.2009 19:34:25
Hallo,
in C gibt es Bedingte Ausdrücke:
Hat die BASH sowas auch?
i
-
SubOptimal
- Beiträge: 1709
- Registriert: 10.01.2005 23:25:46
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: bei Frankfurt
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
-
tschaefer
- Beiträge: 138
- Registriert: 03.09.2004 09:51:48
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Garmisch-Partenkirchen, Germany
-
Kontaktdaten:
Beitrag
von tschaefer » 30.07.2009 20:29:13
Hi,
doch die Bash kann das, siehe Manpage
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:
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 ...
-
detix
- Beiträge: 1743
- Registriert: 07.02.2007 18:51:28
- Wohnort: MK
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:
Beitrag
von lemak » 02.08.2009 13:26:04
Danke.
Ich habe nun so etwas gebastelt:
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)
-
detix
- Beiträge: 1743
- Registriert: 07.02.2007 18:51:28
- Wohnort: MK
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:
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...
-
goeb
- Beiträge: 348
- Registriert: 26.08.2006 18:12:08
- Lizenz eigener Beiträge: MIT Lizenz
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:
weist
$var1 den Wert
default_value zu wenn
$var1 noch nicht gesetzt ist, ansonsten den Wert von
$var1.
MfG, gœb