Autor Tópico: [Resolvido] [arithmetic expression: expecting primary: " % 255"]  (Lida 3769 vezes)

Offline reynaldohortensi

  • Usuário Ubuntu
  • *
  • Mensagens: 42
    • Ver perfil
[Resolvido] [arithmetic expression: expecting primary: " % 255"]
« Online: 22 de Setembro de 2014, 19:01 »
Olá galera,

eu estou tentando escrever um script para mudar meu endereço mac pra um aleatório, mas o problema não está relacionado à mudança de mac e sim (ou talvez) a um erro de sintax.

Esse é o conteúdo do arquivo chmac.sh:
Código: [Selecionar]
#!/bin/bash

echo $SHELL
MAC=00
MAX=$(echo "16 ^ 2 - 1" | bc)
echo "MAX vale "$MAX

for x in 1 2 3 4 5; do
    rand=$RANDOM
    NUM=$((${rand} % ${MAX}))
    echo "NUM em decimal "$NUM
    NUM=`echo "obase=16; $NUM" | bc`
    echo "NUM convertida para hexa "$NUM
    NUM=`printf "%02x" 0x$NUM`
    MAC=$MAC:$NUM
done

echo "O novo MAC será "$MAC
service network-manager stop
ifconfig $1 down
ifconfig $1 hw ether $MAC
ifconfig $1 up
service network-manager start

Quando executo da primeira maneira (como um script deve ser executado) tenho a seguinte saída de erro:
Citar
$ sudo ./chmac.sh wlan0
/bin/bash
MAX vale 255
./chmac.sh: 14: ./chmac.sh: arithmetic expression: expecting primary: " % 255"
Por acaso descobri que se rodar com "bash" antes funciona:
Citar
$ sudo /bin/bash ./chmac.sh wlan0
/bin/bash
MAX vale 255
NUM em decimal 238
NUM convertida para hexa EE
NUM em decimal 55
NUM convertida para hexa 37
NUM em decimal 31
NUM convertida para hexa 1F
NUM em decimal 176
NUM convertida para hexa B0
NUM em decimal 162
NUM convertida para hexa A2
O novo MAC será 00:ee:37:1f:b0:a2
network-manager stop/waiting
network-manager start/running, process 7946

Alguém sabe porque não funciona da primeira maneira?

Abraços e muito obrigado desde já.



« Última modificação: 22 de Setembro de 2014, 20:08 por reynaldohortensi »

Offline reynaldohortensi

  • Usuário Ubuntu
  • *
  • Mensagens: 42
    • Ver perfil
Re: Dúvida com script (novato) [arithmetic expression: expecting primary: " % 255"]
« Resposta #1 Online: 22 de Setembro de 2014, 20:08 »
Galera,
acho que resolvi! \o/

Haviam alguns comentários no início do script que eu não publiquei, mas a shebang (#!/bin/bash) DEVE estar na primeira linha do script. Caso contrário ela é interpretada também como um comentário e o script pode rodar na shell incorreta. Então passei a shebang pra antes dos comentários.

Vou deixar aqui casa alguém tenha o mesmo problema que eu.

Abraços!