Entrada nula em um arquivo de texto

3

Eu tenho um script que cria usuários no Linux, assim como no Oracle, quando crio vários usuários, uso o seguinte:

      cat /path/path/file.txt | while read USER PASS ORAUSER ROLE 
       do

No entanto, tive a infelicidade de deixar o papel em branco e fiz algumas coisas horríveis para o acesso dos meus usuários. Eu queria saber como posso verificar se o texto tem uma variável vazia.

    
por Jose Ruiz 24.07.2012 / 23:20

1 resposta

3

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.

    
por 24.07.2012 / 23:30

Tags