O que você postou não é um script bash , é um script que será executado por algum shell não especificado. Um script de shell deve sempre começar com uma linha shebang . Um script bash deve começar com #!/usr/bin/env bash
ou #!
seguido pelo caminho para bash em seu sistema, normalmente #!/bin/bash
.
Eu não olhei seu script detalhadamente, mas as chances são de que ele esteja falhando porque você usa construções bash, mas instalações Linux embutidas como DD-wrt normalmente não incluem bash, somente cinza BusyBox. Para fazer seu script funcionar no DD-wrt, siga as construções sh portáteis. Você pode usar os checkbashisms (disponíveis na maioria das distribuições do Linux) para procurar construções específicas do bash.
Uma construção específica da bash que eu vi é o operador ==
em condicionais, por exemplo %código%. A maneira portátil de escrever isso é [ "$HOST" == "" ]
ou [ "$HOST" = "" ]
. Da mesma forma [ -z "$HOST" ]
.
Também coloque sempre aspas duplas em torno de substituições de variáveis, a menos que você saiba por que precisa deixá-las de fora . Seu script pode funcionar se seus dados nunca contiverem caracteres especiais, mas não conte com sorte, apenas digite [ "$MAC" = "$MACTEMP" ]
.