[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