Substituindo o valor padrão ('0') pelo parâmetro nulo

1

Eu tenho uma consulta que retorna alguns números do banco de dados e estou tentando colocar isso em um arquivo para enviar. No entanto, alguns dos valores retornam como null e estou tentando substituir '0' em alguns cálculos nesses casos. A única vez que posso obtê-lo para '0', ele também faz isso para variáveis que possuem valores reais. Abaixo está o meu código e saída. O que estou fazendo de errado? (Muito novo para bash / Linux.)

I use these commands:           and I get this output:
echo ${awb-$defaultbase}            NULL
echo ${gachurn-$defaultbase}        2 - 
echo ${awb+$defaultbase}            0
echo ${gachurn+$defaultbase}        0 - 
echo ${awb:-$defaultbase}           NULL
echo ${gachurn:-$defaultbase}       2 - 
echo ${awb:+$defaultbase}           0
echo ${gachurn:+$defaultbase}       0 - 
echo $awb                           NULL
echo $gachurn                       2

Eu quero que o primeiro valor seja 0 e o segundo seja 2.

    
por Lu_Bu 13.11.2015 / 21:48

2 respostas

0

Você pode usar "${awb/NULL/0}" , que faz uma pesquisa simples e substitui. Tenha em atenção que isto irá encontrar e substituir substrings, por isso, se o valor da variável for NULL_and_VOID , você receberá 0_and_VOID .

Observe também que você deve sempre citar todas as referências às variáveis do shell (como mostrado acima) a menos que você tenha uma boa razão para não e você tem certeza de que sabe o que está fazendo.

    
por 13.11.2015 / 22:41
0

NULL , devolvido pelo banco de dados, é uma string de quatro caracteres e não será interpretado como "string nula" (string vazia) pelo shell.

Para verificar se $awb é NULL e substituí-lo por zero, você pode, por exemplo, fazer

[ "$awb" = 'NULL' ] && awb=0

Isso é um pouco menor para escrever do que

if [ "$awb" = 'NULL' ]; then
    awb=0
fi

Em bash , você também pode fazer uma substituição de string, como G-Man sugere :

awb=${awb/NULL/0}
    
por 03.02.2018 / 10:59