Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
ODER-Verknüpfung in Bash-Skript

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Maxl
Gast





BeitragVerfasst am: 13. Aug 2003 7:26   Titel: ODER-Verknüpfung in Bash-Skript

Mit z.B.

if [ "$VAR" -ge "100" ]; then ...

realisiert man eine simple if-Abfrage in Bash-Skripten. So weit so klar. Nur wie schreibe ich das, wenn ich zwei Variablen vergleichen und das Ergebnis ODER-verknüpfen will?

if [ "$VAR1" -ge "100" ] || [ "$VAR2" -ge "300" ]; then ...

geht jedenfalls nicht
 

Jochen
Gast





BeitragVerfasst am: 13. Aug 2003 8:22   Titel: Re: ODER-Verknüpfung in Bash-Skript

Seufz, die bash-Manpage gehört echt mal überarbeitet... Unter "CONDITIONAL EXPRESSIONS" findet man keinen Hinweis darauf, dass ein logisches UND/ODER/NICHT überhaupt möglich ist. Das findet man erst, wenn man sich das test-Kommando oder "[" unter "SHELL BUILTIN COMMANDS" ansieht. Oder-Verknüpfungen macht man mit "-o", Und-Verknüpfungen mit "-a" und ein Nicht mittels "!". Weil jetzt aber "-a" und "-o" gleichzeitig auch normale Optionen für test sind, muss sich dessen Parser echt anstrengen: Wer die Erläuterung dazu unter "test" im ersten Anlauf versteht, ist ein Held.

Kurz und knapp: Dein Beispiel schreibt man korrekt so
if [ "$VAR1" -ge 100 -o "$VAR2" -ge 300 ] ; then ... 
So versteht es übrigens aich die alte Bourne-Shell. Wenn Dein Skript immer in der bash läuft, kannst Du das aber auch viel lesbarer schreiben:
 if (( VAR1 >= 100 || VAR2 >= 300 )) ; then ...
Nein, ich habe die "$" vor den Variablennamen nicht vergessen! Schau mal unter "ARITHMETIC EXPRESSION" in der bash-Manpage, da findest Du das beschrieben.

Jochen
 

ratte
Gast





BeitragVerfasst am: 13. Aug 2003 8:35   Titel: Re: ODER-Verknüpfung in Bash-Skript

ich habe mal bis zur weissglut man bash nicht verstanden (das war extrem hardwaregefaehrlich!) und bis zur bloedheit durch rumprobieren herausgefunden, wie das Perl $counter++ Aequivalent in Bash auszusehen hat.
Ich bin also jetzt dumm wie brot und habe weisse haare

ratte
 

Jochen
Gast





BeitragVerfasst am: 13. Aug 2003 9:47   Titel: Re: ODER-Verknüpfung in Bash-Skript

Weisse Haare?!? Du Glücklicher! Meine sind durch Haare-Raufen mittlerweile alle ausgefallen!

(( counter++ )) , oder nicht? Mit Betonung auf "counter++" und nicht "counter ++" (man beachte das offensichtlich überflüssige und sinnentstellende Leerzeichen zwischen "counter" und "++" ...).

Jochen
 

ratte
Gast





BeitragVerfasst am: 13. Aug 2003 19:11   Titel: Re: ODER-Verknüpfung in Bash-Skript

ganz genau! als ich das schrieb, hatte ich keine Zugang zum Rechner, wo das laeuft und war mir nicht so sicher, das zu posten...

... wo in man bash steht das denn beschrieben???

BTW: Das nutze ich in meinem Packetfilterscript, um alle INPUT rules zu nummerieren, damit ich bei Bedarf eine bestimme rule austauschen kann, damit ich das Script nicht von vorne starten muss. Hat mir das ja Gehirnschmalz gekostet, die iptables-Nummerierung abzuraffen! Aber es funktioniert - und ich bin da sehr stolz drauf!

greetings,
ratte
 

Jochen
Gast





BeitragVerfasst am: 14. Aug 2003 9:59   Titel: Re: ODER-Verknüpfung in Bash-Skript

Wo das in der man bash steht?!?... Na unter "ARITHMETIC EVALUATION" natürlich!

id++ id--
variable post-increment and post-decrement
++id --id
variable pre-increment and pre-decrement

Man beachte die Schreibweise - kein Blank! Wie man das nur missverstehen kann... *kopfschüttel*

Jochen
 

ratte
Gast





BeitragVerfasst am: 15. Aug 2003 18:00   Titel: Re: ODER-Verknüpfung in Bash-Skript

und woher weiss man automatisch, dass das in doppelten runden Klammern zu stehen hat?

Diese Stelle hatte ich naemlich gefunden, bloss $counter++ funktioniert nicht

ratte
 

Jochen
Gast





BeitragVerfasst am: 16. Aug 2003 8:42   Titel: Re: ODER-Verknüpfung in Bash-Skript

Tja, Unter ARITHMETIC EVALUATION wird man zumindest auf
let "..."
verwiesen. Also kann man auch
let "counter++"
schreiben. Und dann muss man nur noch unter SHELL GRAMMAR bei den Compound Commands merken, dass dort ((...)) exakt das gleiche wie let "..." macht. Einfach, oder?

Alternativ findet man auch die Seite http://www.tldp.org/LDP/abs/html/dblparens.html im Advanced Bash-Scripting Guide, der sowieso sehr empfehlenswert ist. Mir ist nur leider keine deutsche Übersetzung dafür bekannt.

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy