• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Shellscript mit 3 möglichkeiten?

revealed

Guru
Hallo!

Ich hab eine Frage, vielleicht währe jemand so nett?

Und zwar:
In einer /etc/sysconfig datei steht ein Wert. Dieser kann zwei Zustände haben (quasi):
Ja und Nein; -> Es handelt sich um den Wert für Xgl oder Xorg mit oder ohne AIGLX;

Dann habe ich eben in einer weiteren Configdatei einen weiteren Bool: (Ja/Nein); (AIGLX on/off);

Jetzt möchte ich entsprechend der Stellung dieser bool´s eine Funktion auslösen, oder nicht. (compiz fusion);

Das habe ich soweit schon geschafft:
(ist eine Erweiterung für die aus dem SuSE Wiki; Dazu gibts erstmal die entsprechende "xsession" file -- der Vollständigkeit halber):
Code:
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=/usr/local/bin/startcompiz.sh
Name=KDE mit compiz Fusion
Comment=KDE mit Compiz Fusion
Und den Code:::::
Code:
#!/bin/sh
set -x
# Das Script entscheidet Anhand des Wertes in der Xorg.conf und einem Sysconfigwert,
# ob AIGLX oder XGL als Session gestartet werden soll.
# Wenn keine Bedingung zutrifft, startet compiz fusion nicht.
#
## Pfade zu startkde und stargnome ##
START="/opt/kde3/bin/startkde";
#START="PFAD ZUM STARTEN VON GNOME";
## Fusion Variable ##
varfuse="/usr/local/bin/fusion.sh";
## AIGLX Variablen ##
varglx="$(grep '"AIGLX" "' /etc/X11/xorg.conf | awk -F '\" '  '{ print$2 }')";
varcom='"on"';
## XGL Variablen ##
varxgl="$(grep "DISPLAYMANAGER_XSERVER=" /etc/sysconfig/displaymanager | awk -F \" '{ print$2 }')";
varcomx="Xgl";
if [ "$varglx" = "$varcom" ]; then
  $varfuse;
 elif [ "$varxgl" = "$varcomx" ]; then
  $varfuse;
 else $START;
fi;
## /EOF

Jetzt wurde mir heute gesagt, dass es noch die Möglichkeit gibt, beispielsweise in C++ ; Dass man eben "und" "oder" verwendet. Ihr wisst sicher, worauf ich anspielen möchte? Was die Idee eben währe, beispielsweise zu sagen

"wenn a und nicht b ist compiz"
"wenn nicht a und b ist compiz"
"wenn nicht b und nicht a" nicht compiz"

?

Macht das überhaupt sinn die zwei bools quasi zu einem bool zu machen?

Was ich herausfinden möchte ist: Wenn ich in dem File weitere bools hätte die als Bedingung für den Start von compiz fusion gelten würden, dann müsste ich immer weitere Vergleichende Abfragen hinzufügen, für jede Bedingung?

Vielen Dank für Tipps!

Dann nöch die Frage, ob ich zur Sicherheit einbauen sollte, dass falls Xgl an ist und AIGLX auch, dass dann compiz fusion eben nicht startet und eventuel einen kdialog mit einer entsprechenden Meldung öffnet? Das währe quasi ein verbotener Zustand?

Um es nochmal zu konkretisieren:
Ich möchte eine Abfrage;

Wenn AIGLX an und Xgl an, dann kein compiz fusion aber dialog;

Das hiesse ich möchte so anfangen:
Code:
## Fehlstellung:
 elif [ "" = "" ]; then
 $START && $dialog;
Kann es aber nicht umsetzen, weil ich nicht weiss, wie ich sagen kann:

--> wenn AIGLX an und Xgl an, dann ab! ?=?

also das müsste in die Richtung gehen?
Code:
elif [ "$varxgl" = "$varcomx" <-UND-> "$varglx" = "varcom"  ]; then

Wie macht man "UND" ?

Ich glaub ich habs gefunden!!

Code:
#!/bin/sh
a=a
b=a
if [ "$a" = "a" -a "$b" = "b" ]; then
 echo OK;
 else echo NOK;
fi;

exit 0;
Ich glaub ich wusste vorher garnicht genau was ich wollte... [gelöst]

Also das "-a" ist ein logisches UND ?
quelle:
http://www.chemie.fu-berlin.de/chemnet/general/topics/scripts_sh.html

Gruß

R
 
OP
revealed

revealed

Guru
Wobei ich aber gerade festgestellt habe, dass das sehr wohl zutreffen kann und dass dann beides startet aber AIGLX die Vorherrschaft scheinbar übernimmt? Ich weiss nicht, ob es da zu Komplikationen kommt.

Also war die Überlegung in Hinsicht auf das Einsatzgebiet zumindest unsinn.

Jedoch weiss ich jetz endlich wie das geht;

Gruß

R
 
Oben