Vorrei assicurarmi che a un certo punto di uno script, dopo aver source
inserito un file di configurazione, siano impostate diverse variabili e, in caso contrario, interrompere l'esecuzione, informando l'utente della variabile mancante. Ho provato
for var in $one $two $three ; do
...
ma se ad esempio $two
non è impostato, il ciclo non viene mai eseguito per $two
. La prossima cosa che ho provato è stata
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
Ma se due non sono impostati, ottengo ancora "due è impostato su" anziché "due non è impostato".
Come posso assicurarmi che tutte le variabili richieste siano impostate?
Aggiornamento / soluzione: so che esiste una differenza tra "set" e "set, ma vuoto". Ora uso (grazie a /programming//a/16753536/3456281 e le risposte a questa domanda) quanto segue:
if [ -n "${!var:-}" ] ; then
quindi, se var
impostato ma vuoto, è comunque considerato non valido.
set -u
all'inizio dello script per terminarlo immediatamente quando viene utilizzata una variabile non impostata.