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
.