¿Cuál es la mejor manera de determinar si una variable en bash está vacía ("")?
He oído que se recomienda hacer if [ "x$variable" = "x" ]
.
¿Es esa la forma correcta? (debe haber algo más sencillo)
Esto devolverá true si una variable no está establecida o está establecida en la cadena vacía ("").
if [ -z "$VAR" ];
La "z" es la mejor manera.
Otra opción que he utilizado es establecer una variable, pero puede ser anulada por otra variable, por ejemplo
export PORT=${MY_PORT:-5432}
Si la variable $MY_PORT
está vacía, entonces PORT
se establece en 5432, de lo contrario PORT se establece en el valor de MY_PORT
. Tenga en cuenta que la sintaxis incluye los dos puntos y el guión.
Si estás interesado en distinguir los casos de estado set-empty versus unset, mira la opción -u para bash:
$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z "$BAR" ] && echo true
bash: BAR: unbound variable
$ BAR=""
$ echo $BAR
$ [ -z "$BAR" ] && echo true
true