mardi 17 novembre 2020

Bash - Simpler and more legible way to check if variable is true or false

In Bash 0 is true and any other number is false, like in C.

To test if a variable is true I'm currently doing:

is_on=0

if [ $is_on -eq 0 ]; then
    echo "It's on!"
else
    echo "It's off!"
fi

I want somethings more simple and readable, so I tried:

This doesn't because [ always returns 0:

is_on=0

if [ $is_on ]; then
    echo "It's on!"
else
    echo "It's off!"
fi

This also doesn't because [[ always returns 0:

is_on=0

if [[ $is_on ]]; then
    echo "It's on!"
else
    echo "It's off!"
fi

This also doesn't work:

is_on=0

if [ $is_on -eq true ]; then
    echo "It's on!"
else
    echo "It's off!"
fi

This inverses the logic:

is_on=0

if (( $is_on )); then
    echo "It's on!"
else
    echo "It's off!"  # Prints this!
fi

This works, but it's a string comparison:

is_on=true

if [ $is_on = true ]; then
    echo "It's on!"
else
    echo "It's off!"
fi

Is there a simpler and more legible way to check if a variable is true or false?

Aucun commentaire:

Enregistrer un commentaire