2013. január 23., szerda

Spot the bug

$ cat a.sh
if [[ "one" == "two" ]]
then
        echo "RIGHT"
else:
        echo "WRONG"
fi
$ bash a.sh
$
The script produces no output. What is the problem?

5 megjegyzés:

  1. Ja, python miatt raktam csak ki megszokasbol. Viszont a millio dollaros kerdes az, hogy az else: az mi ebben a kontextusban es a tobbi utana miert nincs ertelmezve. "else:" helyett lehet amugy "barmi:", akkor sem jo.

    Aki megvalaszolja nyer egy sort.

    VálaszTörlés
  2. ó, hát persze:D
    az az else: szintax error lenne, de ugye az if miatt el se jut odáig a vezérlés, ezért a bash nem is csinál vele semmit

    #!/bin/bash
    echo 1:
    if [[ "one" == "two" ]]
    then
    echo "RIGHT"
    else:
    echo "WRONG"
    fi

    echo 2: itt már szól érte
    if [[ "one" != "two" ]]
    then
    echo "RIGHT"
    else:
    echo "WRONG"
    fi

    echo 3:
    if [[ "one" == "two" ]]
    then
    echo "RIGHT"
    gfdsgfsd
    gfdsgdsf
    else:
    echo "WRONG"
    fi

    VálaszTörlés
  3. Valid, mi is erre jutottunk, reszben _2501 vilagositottfel hogy hulyevagyok es nem ugy mukodik a bash mint ahogy gondolom. Case in point:

    if [["one"=="true]] << error

    Pythonban egyebkent nem valid az ilyen, viszont ez igen, amig nem fut ra nem dob exceptiont, mert ugye nem fogja tudni elore megmondani hogy lesz-e unsetvariable:

    if False:
    print unsetvariable

    A sor termeszetesen jar, kontakt johet a synsecblog _a_ gmail.com-ra.

    VálaszTörlés
  4. köszi :)
    valami nagyobb alkalomkor (hacktivity, szabad szoftver konferencia) átvenném a nyereményt ;-)

    VálaszTörlés