A maior propensão a erros que eu pude encontrar foi:
- Primeiro, pegue o valor. Suponha que você faça algo como:
RR=$?
Agora, não apenas para essa situação, mas para outros que você possa enfrentar, considere:
variável definida:
$ AA=1 ; if (( "10#0${AA}" == 1 )) ; then echo yes ; else echo no ; fi
Resposta: sim
$ AA=1 ; if (( "10#0${AA}" != 1 )) ; then echo yes ; else echo no ; fi
Resposta: não
variável indefinida:
$ AA=1 ; if (( "10#0${BB}" == 1 )) ; then echo yes ; else echo no ; fi
Resposta: não
$ AA=1 ; if (( "10#0${BB}" != 1 )) ; then echo yes ; else echo no ; fi
Resposta: sim
$ AA=1 ; if (( "10#0${BB}" == 0 )) ; then echo yes ; else echo no ; fi
Resposta: sim
Isso evita erros de todos os tipos.
Você provavelmente está ciente de toda a sintaxe, mas aqui estão algumas dicas:
- Use aspas. Evite que
"blank" seja nothing .
- A nova notação moderna para variáveis é
${variable} .
- Adicionar um zero concatenado antes do seu número também evita "nenhum número".
- Mas espere, adicionar um zero faz com que o número se torne
base-8 . Você receberá um erro como:
-
value too great for base (error token is "08") para números acima de 7 . É quando 10# entra em jogo:
-
10# força o número a ser base-10 .