[Freifunk Franken] l2tp Tunneldigger in Fürth auf fff-gw-cd1 - Tester gesucht!
A. Schulze
sca at andreasschulze.de
Mi Mär 30 09:27:06 CEST 2016
Christian Dresel:
> if [[ "$?" == "0" ]]; then
das würde ich anders schreiben: "if [ 0 -eq $? ]; then"
1. == ist ein Stringvergleich
$? und "0" werden somit erst mal in Zeichenketten umgewandelt, und
*diese* werden dann verglichen.
2 Zahlen zu vergleichen ist vermutlich für die Shell einfacher...
2. der Wert, mit dem verglichen wird, immer Vorne
liest sich komisch, hat aber einen Vorteil: ein
Interpreter/Compiler kann logische Fehler bemerken:
schreibe ich als Bedingung "a" = "3" ist das eine Zuweisung,
schreibe ich "3" = "a" wird das nicht gehen.
Sollte ich also beim Programmieren statt eines Vergleichsoperators
einen Zuweiungsoperator benutzen,
haut mir das jeder Compiler/Interpreter um die Ohren, wenn die
Variable hinten steht.
if [ "a" = "3" ] anstatt [ "a" == "3" ] könnte dazu führen, dass
die Zuweisung korrekt ausgeführt wird.
Die Bedingung für den if Test wäre immer wahr. Dennoch ist das
nicht das, was ich als Programmierer erreichen wollte.
Schreibe ich also konsequent "if [ 3 -eq $? ]" kann es mir nicht
passieren, dass ich eine Zuweisung statt
eines Vergleiches programmiere.
3. [[ ... ]] ist Bash spezifisch
wenn openwrt irgendwann mal auf eine andere Shell wechseln sollte,
sind plötzlich viele Skripte kaputt.
-> mehr zum Thema "Shell-neutrale" Skripte:
https://wiki.ubuntu.com/DashAsBinSh
Andreas
Mehr Informationen über die Mailingliste franken