if-then-else Abfrage in der ~/.bashrc
Hallo. Und wiedermal ich mit meinen Konfig-Dateien. Ich würde in meiner ~/.bashrc gerne aliase vergeben. Wenn diese einfache Befehle mit Argumenten ausführen sollen, habe ich keine Problem damit. Wie sieht es aber aus, wenn ich das eine if-then-else Abfrage einbauen will? Folgender Hintergedanke. Ich arbeite meistens mit KDE. Aber selbst da sind mir Konsolen-Programme teilweise lieber. Wie ogg123. Läuft KDE muss ich auf der Kommandozeile ja "artsdsp ogg123 Datei" eingeben. Da ich aber nicht immer mit KDE arbeite, hätte ich gerne, dass bei der Eingabe von ogg123 getestet wird, ob KDE läuft. Wenn ja, soll ogg123 in artsdsp ogg123 geändert werden. Wenn nein, solls bei ogg123 bleiben. Ich _dachte_, dass ich mit alias ogg123='if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde"] ; then "artsdsp ogg123"; else "ogg123"; fi' das gewünschte Ergebnis erhalte. Aber Pustekuchen. Die Bash tut dann so, als hätte ich einen unvollständigen Befehl eingegeben. Also so, als würde ein ' ` oder " fehlen. Was mache ich hier falsch? Ich habe mir schon die /etc/bash.bashrc dazu angeschaut, sehe aber keine großen Unterschied zu meiner Zeile. Gruß Marcus
Hallo, On Fri, 24 Oct 2003 at 18:36 (+0200), Marcus Habermehl wrote:
Ich arbeite meistens mit KDE. Aber selbst da sind mir Konsolen-Programme teilweise lieber. Wie ogg123.
Läuft KDE muss ich auf der Kommandozeile ja "artsdsp ogg123 Datei" eingeben. Da ich aber nicht immer mit KDE arbeite, hätte ich gerne, dass bei der Eingabe von ogg123 getestet wird, ob KDE läuft.
Wenn ja, soll ogg123 in artsdsp ogg123 geändert werden. Wenn nein, solls bei ogg123 bleiben.
Ich _dachte_, dass ich mit
alias ogg123='if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde"] ; then "artsdsp ogg123"; else "ogg123"; fi'
if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde" ] ; then alias ogg123='artsdsp ogg123' else alias ogg123='ogg123' fi Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Freiheit bedeutet Verantwortlichkeit; das ist der Grund, warum sich die meisten Menschen vor ihr fürchten. -- George Bernard Shaw
Bernhard Walle
Hallo,
On Fri, 24 Oct 2003 at 18:36 (+0200), Marcus Habermehl wrote:
Ich arbeite meistens mit KDE. Aber selbst da sind mir Konsolen-Programme teilweise lieber. Wie ogg123.
Läuft KDE muss ich auf der Kommandozeile ja "artsdsp ogg123 Datei" eingeben. Da ich aber nicht immer mit KDE arbeite, hätte ich gerne, dass bei der Eingabe von ogg123 getestet wird, ob KDE läuft.
Wenn ja, soll ogg123 in artsdsp ogg123 geändert werden. Wenn nein, solls bei ogg123 bleiben.
Ich _dachte_, dass ich mit
alias ogg123='if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde"] ; then "artsdsp ogg123"; else "ogg123"; fi'
if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde" ] ; then alias ogg123='artsdsp ogg123' else alias ogg123='ogg123' fi
Also in normaler Skriptform in die ~/.bashrc eintragen. Danke! In dem Fall kann ich ja auch gleich mehrere aliase definieren, die nur bei laufendem KDE gültig sein sollen, oder? Und das, was ich ursprünglich in die ~/.bashrc eintragen wollte ist eh quatsch. Den else-Teil dürfte man sich ja sparen können, da ogg123 so oder so ogg123 ist und bleibt. Gruß Marcus
On Fri, 24 Oct 2003 at 19:48 (+0200), Marcus Habermehl wrote:
Bernhard Walle
schrieb am Freitag, 24 Oktober 2003: On Fri, 24 Oct 2003 at 18:36 (+0200), Marcus Habermehl wrote:
Ich arbeite meistens mit KDE. Aber selbst da sind mir Konsolen-Programme teilweise lieber. Wie ogg123.
Läuft KDE muss ich auf der Kommandozeile ja "artsdsp ogg123 Datei" eingeben. Da ich aber nicht immer mit KDE arbeite, hätte ich gerne, dass bei der Eingabe von ogg123 getestet wird, ob KDE läuft.
Wenn ja, soll ogg123 in artsdsp ogg123 geändert werden. Wenn nein, solls bei ogg123 bleiben.
Ich _dachte_, dass ich mit
alias ogg123='if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde"] ; then "artsdsp ogg123"; else "ogg123"; fi'
if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde" ] ; then alias ogg123='artsdsp ogg123' else alias ogg123='ogg123' fi
Also in normaler Skriptform in die ~/.bashrc eintragen. Danke!
In dem Fall kann ich ja auch gleich mehrere aliase definieren, die nur bei laufendem KDE gültig sein sollen, oder?
Klar.
Den else-Teil dürfte man sich ja sparen können, da ogg123 so oder so ogg123 ist und bleibt.
Stimmt, darauf habe ich gar nicht geschaut. Ich habe einfach nur kopiert ... Gruß, Bernhard -- Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Werkzeuge vorzubereiten, Aufgaben zu vergeben, und die Arbeit einzuteilen, sondern lehre die Männer die Sehnsucht nach dem weiten endlosen Meer. -- Antoine de Saint-Exupery
Hallo, Am Fri, 24 Oct 2003, Marcus Habermehl schrieb:
Ich _dachte_, dass ich mit
alias ogg123='if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde"] ; then "artsdsp ogg123"; else "ogg123"; fi'
das gewünschte Ergebnis erhalte.
Du willst eine Funktion verwenden: ogg123() { if ps aux | grep -q '[a]rtsd'; then artsdsp ogg123 "$@" else ogg123 "$@" fi } -dnh -- "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." -- Rich Cook
David Haller
Hallo,
Am Fri, 24 Oct 2003, Marcus Habermehl schrieb:
Ich _dachte_, dass ich mit
alias ogg123='if [ "$WINOWMANAGER" = "/usr/X11R6/bin/kde"] ; then "artsdsp ogg123"; else "ogg123"; fi'
das gewünschte Ergebnis erhalte.
Du willst eine Funktion verwenden:
ogg123() { if ps aux | grep -q '[a]rtsd'; then artsdsp ogg123 "$@" else ogg123 "$@" fi }
Danke. Nach einer kleinen Modifikation hat es mit der Funktion geklappt. ... if [ `ps aux | grep '[a]rtsd' | awk '{ print $2 }'` -gt 0 ] ; then ... Gruß Marcus
Hallo, Am Sun, 26 Oct 2003, Marcus Habermehl schrieb:
David Haller
schrieb am Freitag, 24 Oktober 2003: [..] Du willst eine Funktion verwenden:
ogg123() { if ps aux | grep -q '[a]rtsd'; then artsdsp ogg123 "$@" else ogg123 "$@" fi }
Danke. Nach einer kleinen Modifikation hat es mit der Funktion geklappt.
... if [ `ps aux | grep '[a]rtsd' | awk '{ print $2 }'` -gt 0 ] ; then ...
Was soll das bringen? Laeuft artsd denn jemals mit einer PID <= 0? Normal sollte es reichen "ob" ein artsd laeuft und genau das macht der Test bei mir (artsd laeuft mind. einmal -- es interessiert nur der Exitstatus von grep. -dnh -- But can we shake him as if he'd be still alive, if we see (the) lionel losing interest in playing with him? <shudder> This brings a new image in my mind: The pit with lionels! Much more apropriate name for what becomes the monastery when a monk forgets to close the door behind him and a luser trips in. - Ino!~
participants (3)
-
Bernhard Walle
-
David Haller
-
Marcus Habermehl