WinFuture-Forum.de: [bash] Or Im Elif? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Linux
Seite 1 von 1

[bash] Or Im Elif? Geht das?


#1 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.627
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

geschrieben 22. März 2009 - 12:18

Hi,

ich habe mir hier folgendes Script gebastelt:
#!/bin/sh

if [ $1 == "-a" -o "--activate" ]; then
	xrandr --output S-video --set load_detection 1
	xrandr --addmode S-video 800x600
	xrandr --output LVDS --mode 800x600
	xrandr --output S-video --mode 800x600
	xrandr --output S-video --set tv_standard pal
	xvattr -a XV_CRTC -v 1;
elif [ $1 == "-d" -o "--deactivate" ]; then
	xrandr --output S-video --off
	xrandr --rmmode S-video 800x600
	xrandr --output LVDS --mode 1400x1050
	xvattr -a XV_CRTC -v 0;
else
	echo "Usage: tv-out [OPTION]"
	echo "Activate or deactivte the TV-Out"
	echo " "
	echo "-a, --activate			Activates the TV-Out"
	echo "-d, --deactivate		Deactivates the TV-Out"
fi
Das funktioniert soweit auch schon ganz gut. Außer die folgende Zeile:
elif [ $1 == "-d" -o "--deactivate" ]; then
Da kommt immer folgende Fehlermeldung:

Zitat

./tv-out: line 10: [: too many arguments
Das legt bei mir den Verdacht Nahe, dass ein OR (-o) im ELIF nicht geht. Stimmt das? Oder habe ich da irgendeinen anderen Fehler, den ich übersehen habe?

Gruß,
skaven

Edit: -a und --activate funktionieren wunderbar. -d und --deactivate funktionieren gar nicht. Und ohne Option kommt die angegebene Fehlereldung und danach die Usage-Infos.

Dieser Beitrag wurde von sкavєи bearbeitet: 22. März 2009 - 13:00

Eingefügtes Bild
Eingefügtes Bild
0

Anzeige



#2 _lustiger_affe_

  • Gruppe: Gäste

geschrieben 22. März 2009 - 16:19

BASH-3x? AFAIK nicht möglich, ev. in der neuen v4. Trotzallem, i/e ist hier denkbar unangebracht.

Ich nehme mal an, dass das Tool nicht von Hand aufgerufen werden soll, sondern an einen Shortcut gebunden wird? Wenn ja, würde eine simple Condition reichen, entweder basierend auf dem Output von xrandr oder z.B. der Existenz von $file.

Wenn das Skript im Prinzip machen soll, was oben nicht klappt, ist c/e wesentlich einfacher, ergo etwas wie das:
function activate_tv() {
	xrandr --output S-video --set load_detection 1; xrandr --addmode S-video 800x600
	xrandr --output LVDS --mode 800x600; xrandr --output S-video --mode 800x600
	xrandr --output S-video --set tv_standard pal; xvattr -a XV_CRTC -v 1
}

function deactivate_tv() {
	xrandr --output S-video --off; xrandr --rmmode S-video 800x600;
	xrandr --output LVDS --mode 1400x1050; xvattr -a XV_CRTC -v 0
}

function show_usage() {
	echo "Usage: tv-out [OPTION]\nActivate or deactivte the TV-Out\n"
	echo "-a, --activate			Activates the TV-Out\n-d, --deactivate		Deactivates the TV-Out"
}

case $1 in
	 (-a|--activate)) activate_tv;;
	 (-d|--deactivate)) deactivate_tv;;
	 *) show_usage;;
esac


Sollte funktionieren, tut's jedenfalls mit zsh.

Dieser Beitrag wurde von lustiger_affe bearbeitet: 22. März 2009 - 16:41

0

#3 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.627
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

geschrieben 22. März 2009 - 21:18

Jup, BASH 3.2 (glaube ich jedenfalls, müsste die gleiche Version auf'm Notebook sein, wie hier auf'm Desktop).

Das mit dem case is natürlich wesentlich schöner, das stimmt. Nur irgendwie bin ich nicht auf die Idee gekommen das damit zu machen. Und mit Funktionen habe ich in meinen Scripten bisher noch nie gearbeitet. Sieht aber ziemlich simpel aus. Damit werde ich in Zukunft wohl mal ein wenig rumspielen. :angry:

Ich probier das ganze nächstes Wochenende mal aus. Vorher habe ich kein Kabel für den TV-Out da und nur halb testen will ich nicht.
Aber vielen Dank erstmal. :angry:
Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0