Formas de verificar se uma variável está vazia:
# bash
if [[ -z $var ]]; then
echo var is empty
fi
# POSIX sh
if [ -z "$var" ]; then
echo var is empty
fi
printf %s\n "${var:-var is unset or null}"
: "${var:=default value for var}"
Isso ainda não resolve o problema de campos ausentes ou desalinhados no seu arquivo de entrada. Se o campo ORAUSER
estiver ausente, a variável ORAUSER
será atribuída ao valor do campo ROLE
. Se houver muitos campos, a última variável, ROLE
, receberá todos os campos extras. Eu recomendaria alternar seu formato de arquivo de texto para usar um separador que não seja espaço em branco, para que os campos vazios sejam explicitamente delimitados. Por exemplo, /etc/passwd
usa dois pontos ( :
).
Se você ainda não o fez, eu também recomendo a leitura de BashFAQ 1 para um conhecimento coletivo sobre a análise adequada de arquivos de texto linha por linha / campo a campo em scripts de shell e bash
especificamente.