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.
[ condition1 ] && [ condition2 ] && echo "Good" || echo "Bad"Explanation
[is an alias for the programtest, so you can callman testfor more info.
&&is bash syntax for conjunction. In A && B, B will only be called if A returned a exit code >0 (error). You can callman bashfor more info.
||is bash syntax for disjunction. In A || B, B will only be called if A returned exit code =0 (success).trueandfalseare programs that just return exit codes 0 respectively 1.
To check for an empty string, use
-z.-nchecks to see if a string is not empty.If you want true for empty strings, you want -z not -n
if [[ -z "VARIABLE1" && -z "VARIABLE2" ]]; then echo "OK" fiTry this:
#!/usr/bin/env bash a="" if [[ -z "${a}" && -z "${b}" ]]; then echo "OK" else echo "Not OK" fi a="OK" if [[ -n "${a}" && -z "${b}" ]]; then echo "More ${a}" else echo "More Unokay" fiYou need to reference the value of the variable, ie:
if [[ -n "$VARIABLE1" && -n "$VARIABLE2" ]]; then echo "OK" fiCould try:
if [ condition1 ] && [ condition2 ]; then echo "OK" fi




