Asignar valores predeterminados a variables de shell con un solo comando en bash
Tengo un montón de pruebas sobre variables en un script de shell bash (3.00) donde, si la variable no está configurada, asigna un valor predeterminado, por ejemplo:
if [ -z "${VARIABLE}" ]; then
FOO='default'
else
FOO=${VARIABLE}
fi
Creo recordar que hay cierta sintaxis para hacer esto en una línea, algo parecido a un operador ternario, por ejemplo:
FOO=${ ${VARIABLE} : 'default' }
(aunque sé que eso no funcionará...)
¿Estoy loco o existe algo así?
Muy parecido a lo que publicaste, en realidad. Puedes usar algo llamado expansión de parámetros Bash para lograr esto.
Para obtener el valor asignado, o default
si falta:
FOO="${VARIABLE:-default}" # FOO will be assigned 'default' value if VARIABLE not set or null.
# The value of VARIABLE remains untouched.
Para hacer lo mismo, además de asignar default
a VARIABLE
:
FOO="${VARIABLE:=default}" # If VARIABLE not set or null, set it's value to 'default'.
# Then that value will be assigned to FOO
Para argumentos de línea de comando:
VARIABLE="${1:-$DEFAULTVALUE}"
que asigna VARIABLE
el valor del primer argumento pasado al script o el valor de DEFAULTVALUE
si no se pasó dicho argumento. Las citas evitan la fragmentación y la división de palabras.