Me gustaría asegurarme de que en un determinado punto de un script, después source
de crear un archivo de configuración, se establezcan varias variables y, si no lo están, para detener la ejecución, informar al usuario sobre la variable que falta. Yo he tratado
for var in $one $two $three ; do
...
pero si, por ejemplo, $two
no está configurado, el bucle nunca se ejecuta para $two
. Lo siguiente que intenté fue
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
Pero si dos no está configurado, sigo obteniendo "dos está configurado en" en lugar de "dos no está configurado".
¿Cómo puedo asegurarme de que todas las variables requeridas estén establecidas?
Actualización / Solución: Sé que hay una diferencia entre "set" y "set, pero vacío". Ahora uso (gracias a /programming//a/16753536/3456281 y las respuestas a esta pregunta) lo siguiente:
if [ -n "${!var:-}" ] ; then
entonces, si var
está configurado pero vacío, todavía se considera inválido.
set -u
al comienzo de su script para terminarlo inmediatamente cuando se utiliza una variable no establecida.