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

&& & || :D

A

Anonymous

Gast
wenn ich mit einem bestimmten syntax etwas starte, und direkt danach den sxit-status auslese, und aufgrund dessen etwas anderes ausführe, ist dann || oder && gültig für den URSPRÜNGLICHEN befehl, oder das VORHERGEHENDE?? Beispiel:
Code:
checkproc $DIR/hlds_run && echo "CS-Server RUNNING" || echo "CS-Server NOT RUNNING"
--> ich vermute nämlich dass in diesem Ausschnitt eines Scripts für CS ein Fehler vorliegt, und zwar denke ich, dass || den exit-status von dem echo vorher nimmt, liege ich da richtig?
 

TeXpert

Guru
die Zeile sagt:

mach checkproc $DIR/hlds_ru, wenn das wahr ist, dann mach echo "CS-Server RUNNING" sonst mach echo "CS-Server NOT RUNNING"

Reales Beispiel:
Code:
$ [ -n "" ] && echo "true" || echo "false"
false
$ [ -z "" ] && echo "true" || echo "false"
true
 

regexer

Advanced Hacker
rm -rf / schrieb:
wenn ich mit einem bestimmten syntax etwas starte, und direkt danach den sxit-status auslese, und aufgrund dessen etwas anderes ausführe, ist dann || oder && gültig für den URSPRÜNGLICHEN befehl, oder das VORHERGEHENDE??
Du könntest ja theoretisch mehr als zwei Befehle mit && verknüpfen. Schlägt IRGENDEINER dieser &&-Verknüpften fehl, wird in den ||-Zweig gesprungen. Beispiel:
Code:
~> echo 1 && echo 2 && ls gibtesnicht && echo 3 || echo fehler
1
2
ls: gibtesnicht: Datei oder Verzeichnis nicht gefunden
fehler
 

regexer

Advanced Hacker
Ergänzung zum Thema: Generell ist es möglich, auch kompliziertere Verschachtelungen mit && bzw. || auszudrücken. Es ist wirklich nur noch die Frage relevant, ob dieser Spaghetti-Code dann auch noch lesbar ist. Beispiel:

Code:
file=/etc/hosts

# Moeglichkeit 1:
if test -f $file
then
  if grep -iq aol $file
  then
    echo kuendigen!
  else
    echo brav!
  fi
else
  echo keine hosts
fi

# Moeglichkeit 2:
test -f $file && ( grep -iq aol $file && echo kuendigen! || echo brav! ) || echo keine hosts
 

regexer

Advanced Hacker
TeXpert schrieb:
<scnr>ich wundere mich, dass hier ein perl-coder cryptische 1-Zeiler ablehnt ;) </scnr>
Das tolle ist doch: Mit perl kann jeder glücklich werden. Hacker, die die Bytes des Codes zählen und zu verringern suchen und Programmierer, die immer schön ausschreiben, damit andere (oder man selbst) das Teil noch lesen können. TIMTOWTDI
:D

Wenn du gerne in ganzen Sätzen Programmierst, kannst du ja das Modul Lingua::Romana::perligata nehmen. Siehe

http://search.cpan.org/~dconway/Lingua-Romana-Perligata-0.50/lib/Lingua/Romana/Perligata.pm
 

TeXpert

Guru
Wenn du gerne in ganzen Sätzen Programmierst, kannst du ja das Modul Lingua::Romana::perligata nehmen. Siehe

http://search.cpan.org/~dconway/Lingua-Romana-Perligata-0.50/lib/Lingua/Romana/Perligata.pm

oh gott, lieber nicht... dann beschäftige ich mich doch eher mit literate programming und CWEB ;)
 
Oben