20
Mar
09

I’m a basher

heckert_gnusmallEstava fazendo um script para a pesquisa esta semana. O propósito dele deveria ser rodar e escolher números aleatórios, para matarmos processos. Ao terminar o programa, que funcionava muito bem no Mac OS X, ficou parecendo o seguinte:

#!/bin/sh

contador=0
MAXIMO=15

while [ $contador -lt $MAXIMO ]
do
  echo $[ $[ $RANDOM % 30 ] + 10 ]
  contador=$[ $contador + 1 ]
done

Lindo. Imprimia uma lista de números aleatórios entre 10 e 39. Tudo o que eu queria.

O problema veio na hora de passar este pequeno script para o Ubuntu e rodar os testes necessários. Ao invés de funcionar perfeitamente, ele declarava erros incompreensíveis para mim. Informava que havia variáveis não encontradas, operações não entendidas, etc. Este é o momento em que você para e pensa: “WTF”?

Rodei novamente no Mac. Lindo. Digitei linha por linha no próprio shell do Ubuntu. Funcionou! Mas ao tentar copiar o resultado deste esforço para um documento .sh, ele se tornava em vão. Veio a dúvida: será que este shell do linux do laboratório está quebrado?

Fui verificar onde estava localizado. Após executar um file /bin/sh no Ubuntu, tive como resposta algo esclarecedor: Symbolic link to `dash‘. Lembrei de imediato que o Ubuntu não usa o Bash por questões de desempenho, e este Dash – Debian Almquist Shell possui diversas incompatibilidades com o Bash, já que utiliza um conjunto de funcionalidades mais restrito e original ao padrão POSIX.

Resultado: para corrigir o problema, alterei a linha de shebang para #!/bin/bash. Quanto às incompatibilidades, corrigirei-as depois. =)


0 Respostas para “I’m a basher”



  1. Sem comentários ainda

Deixe uma resposta




X-Files

 

Março 2009
S T Q Q S S D
« Fev   Abr »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Estatísticas:

  • 3,872 erros de pesquisa

Tweet! :>

last.fm

Join the Free Software Foundation!

Support freedom