Script com várias condições aritméticas falhando

1

Estou com problemas com um script que converte números em bytes.

  • Se o número for grande o suficiente para atingir gigabytes ou terabytes, o script é executado como deveria.
  • Se o número for convertido em kilobytes, ele executará o script, mostrará o número em kilobytes e envia uma mensagem de erro ao mesmo tempo.
  • Se eu estiver no intervalo de megabytes, ele envia apenas a mensagem de erro:
line n ((: x > 1048576 : syntax error: invalid arithmetic operator (error token is " "). x represents the number I input.
tb=1099511627776
gb=1073741824
mb=1048576
kb=1024
read number
if (( $number > $tb )); then
  echo "$(( number / tb )) terabytes"

elif (( $number > $gb )) && (( $number < $tb )); then
  echo "$(( number > gb )) gigabytes"

elif (( $number > $mb )) && (( $number < $gb )); then
  echo "$(( number > mb )) megabytes"

elif (( $number > $kb )) && (( $number < $mb )); then
  echo "$(( number > mb )) kilobytes"

fi

A linha n é o meio elif .

    
por Thomas 11.03.2015 / 23:07

2 respostas

2

Há um erro nesta linha: echo "$(( number > gb ) gigabytes" está faltando).

A linha deve ler: echo "$(( number > gb )) gigabytes"

    
por 12.03.2015 / 00:44
1

Eu encontrei o problema com o verificador de verificação de shell, obrigado @Cyrus. Aparentemente, eu tinha um espaço não-invasivo (& nbsp) que eu precisava excluir e transformar em um espaço normal no meio elif entre ((e $ number. Como isso acontece?

    
por 12.03.2015 / 09:28