Hi,

I trying to test two condition together (AND) under bash but it’s not working…

The goal is ti have True when two variables are either not set or empty (empty string)

I’ve tried

if [[ -n VARIABLE1 && -n VARIABLE2 ]]; then
    echo "OK"
fi

Here I get the “OK” no matter what .

Thanks.

    • Farnsworth@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      23 days ago

      Never use a && b || c. It is not the same as if a; then b; else c; fi: when a succeeds but b fails, it will run both b and c.

      I would not bother with [ unless you absolutely need compatibility with non-bash shells.

    • Farnsworth@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      23 days ago

      in [[, empty strings are falsy, so this also works:

      [[ ! $VARIABLE1 && ! $VARIABLE2 ]] && echo "OK"
      
  • Rick_C137@programming.devOP
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    24 days ago

    Thank you all for yours input

    What finally did work

    if [[ -z VARIABLE1 && -z VARIABLE2 ]]; then
        echo "OK"
    fi
    

    If only Linux was using Python syntax that would be so much more intuitive…