Bash test missing variables

From UVOO Tech Wiki
Jump to navigation Jump to search
if ! [ -n "${myvar-}" ]; then
  echo $myvar not exist
fi

https://tldp.org/LDP/abs/html/comparison-ops.html

-n
string is not null.

Caution 
The -n test requires that the string be quoted within the test brackets. Using an unquoted string with ! -z, or even just the unquoted string alone within test brackets (see Example 7-6) normally works, however, this is an unsafe practice. Always quote a tested string. [1]

https://unix.stackexchange.com/questions/463034/bash-throws-error-line-8-1-unbound-variable

n particular, one could use [ -n "${1-}" ] (that is, with an empty default value) to see if the parameter is set and non-empty; or [ "${1+x}" = x ] to see if it's set, even if empty. – 
ilkkachu
 Aug 16, 2018 at 18:30
I still get unbound variable error despite using if [[ -n ${1-default} ]] – 
Chaitanya Bapat
 Dec 7, 2019 at 2:59
5
@ChaitanyaBapat I was still getting unbound variable as well until I used :- instead of -. So, for me at least, the ${1:-default} no loner raised the error. – 
Adam Badura
 Apr 9, 2020 at 11:26
As a side note, if you are trying to access an array element with an index out of range, you get the same error (with syntax ${my_array[$index]}).