Laço de repetição for / 168: Syntax error: Bad for loop variable [RESOLVIDO]

1. Laço de repetição for / 168: Syntax error: Bad for loop variable [RESOLVIDO]

Fernando Guilherme Alves Moreira
fernandoguialves

(usa CentOS)

Enviado em 19/02/2015 - 13:57h

Pessoal, bom dia.
Estou com erro na linha 168 do meu código "168: Syntax error: Bad for loop variable" porem não consigo entender qual o o problema com meu for.
for ((i=$INICIO; i<=$FIM; i++))

Já rodei na linha de comando normal apenas o "for" e funciona normalmente.
Alguém sabe me dizer o problema?

Linhas do problema em negrito a baixo:

#!/bin/sh
basedir=/u/saci

Principal() {
OPCAO=$( dialog \
--stdout \
--menu 'MENU:' \
0 0 0 \
1 'Inclusao de usuarios' \
2 'Exclusao de usuarios' \
3 'Criar usuarios de expedicao 01/03' \
4 'Excluir usuarios de expedicao 01/03' \
5 'Criar usuarios Nerus' \
6 'Criar usuarios vendas Loja01' \
0 'Sair' ) \

case $OPCAO in
1) Inclusao ;;
2) Exclusao ;;
3) Expedicao ;;
4) ExcluirExp ;;
5) InclusaoNerux ;;
6) Sequencialj1 ;;
0) Sair ;;
esac
}

Inclusao() {
GRUPO=saciuser
USUARIO=$(dialog --stdout --inputbox 'Digite o nome do novo usuario:' 0 0)


if [ $USUARIO = 'cut -d: -f1 /etc/passwd | grep -i $USUARIO' ] ; then
dialog --msgbox 'Usuario ja esta cadastrado no linux' 5 40
Principal
else
chamaSenha
SESSOES=$(dialog --stdout --inputbox 'Informe o maximo de sessoes para esse usuario:' 0 0)

useradd -g $GRUPO -d /home/$USUARIO -s /bin/bash -m $USUARIO
(echo $SENHA ; echo $SENHA) | passwd $USUARIO
cp -f $basedir/shells/bash_profile /home/$USUARIO/.bash_profile
chown $USUARIO.$GRUPO /home/$USUARIO/.bash_profile
chmod 664 /home/$USUARIO/.bash_profile
sed -i 's?MAX=2?MAX='$SESSOES'?g' /home/$USUARIO/.bash_profile
sed -i 's?export SACI_MYSQL_PSWD=""?export SACI_MYSQL_PSWD="'$SENHA'"?g' /home/$USUARIO/.bash_profile
mysql -u userdb -xxxxxx -e "CREATE USER '$USUARIO'@'saci1%' IDENTIFIED BY '$SENHA';"
mysql -u userdb -xxxxxx -e "GRANT ALL PRIVILEGES ON *.* TO '$USUARIO'@'saci1%' IDENTIFIED BY '$SENHA';"
dialog --msgbox 'Usuario adcionado com sucesso' 5 40
fi
Principal
}

Exclusao() {
USUARIO=$(dialog --stdout --inputbox 'Digite o nome do usuario que deseja excluir:' 0 0)

if [ $USUARIO != 'cut -d: -f1 /etc/passwd | grep -i $USUARIO' ] ; then
dialog --yesno "Deseja realmente excluir o usuario $USUARIO" 0 0
if [ $? = 0 ]; then
userdel -r $USUARIO
rm -rf /home/$USUARIO
mysql -u userdb -xxxxxx -e "DROP USER '$USUARIO'@'saci1%';"
dialog --msgbox 'Exclusao realizada com sucesso!' 5 40
else
Principal
fi
else
dialog --msgbox 'Usuario nao existe no sistema' 5 40
Exclusao

fi
Principal
}


Expedicao() {
USUARIO=$(dialog --stdout --inputbox 'Digite o nome do novo usuario:' 0 0)

USUARIO=$USUARIO"0"

for i in $(seq 3);
do
if [ $USUARIO$i = 'cut -d: -f1 /etc/passwd | grep -i $USUARIO$i' ] ; then
dialog --msgbox "O Usuario $USUARIO$i ja \nesta cadastrado no linux" 0 0
Principal
fi
done
chamaSenha
SESSOES=$(dialog --stdout --inputbox 'Informe o maximo de sessoes para esse usuario:' 0 0)


for i in $(seq 3);
do
if [ $i = 1 ]; then
GRUPO=expedicao01
elif [ $i = 2 ]; then
GRUPO=expedicao02
elif [ $i = 3 ]; then
GRUPO=expedicao03
fi

useradd -g $GRUPO -d /home/$USUARIO$i -s /bin/bash -m $USUARIO$i
gpasswd -a $USUARIO$i saciuser
(echo $SENHA ; echo $SENHA) | passwd $USUARIO$i

cp -f $basedir/shells/bash_expedicao /home/$USUARIO$i/.bash_profile

if [ $i = 1 ]; then
cp -f $basedir/shells/menu01.sh /home/$USUARIO$i/menu.sh
elif [ $i = 2 ]; then
cp -f $basedir/shells/menu02.sh /home/$USUARIO$i/menu.sh
elif [ $i = 3 ]; then
cp -f $basedir/shells/menu03.sh /home/$USUARIO$i/menu.sh
fi

chown $USUARIO$i.$GRUPO /home/$USUARIO$i/.bash_profile
chown $USUARIO$i.$GRUPO /home/$USUARIO$i/menu.sh
chmod 664 /home/$USUARIO$i/.bash_profile
chmod 777 /home/$USUARIO$i/menu.sh
sed -i 's?MAX=2?MAX='$SESSOES'?g' /home/$USUARIO$i/.bash_profile
sed -i 's?export SACI_MYSQL_PSWD=""?export SACI_MYSQL_PSWD="'$SENHA'"?g' /home/$USUARIO$i/.bash_profile
mysql -u userdb -xxxxxx -e "CREATE USER '$USUARIO$i'@'saci1%' IDENTIFIED BY '$SENHA';"
mysql -u userdb -xxxxxx -e "GRANT ALL PRIVILEGES ON *.* TO '$USUARIO$i'@'saci1%' IDENTIFIED BY '$SENHA';"

dialog --msgbox "O Usuario $USUARIO$i \nfoi adcionado com sucesso" 0 0

done
Principal
}

InclusaoNerux() {
GRUPO=saciuser
USUARIO=$(dialog --stdout --inputbox 'Digite o nome do novo usuario:' 0 0)


if [ $USUARIO = 'cut -d: -f1 /etc/passwd | grep -i $USUARIO' ] ; then
dialog --msgbox 'Usuario ja esta cadastrado no linux' 5 40
Principal
else
chamaSenha
SESSOES=$(dialog --stdout --inputbox 'Informe o maximo de sessoes para esse usuario:' 0 0)

useradd -g $GRUPO -d /home/$USUARIO -s /bin/bash -m $USUARIO
(echo $SENHA ; echo $SENHA) | passwd $USUARIO
cp -f $basedir/shells/bash_profileNerus /home/$USUARIO/.bash_profile
chown $USUARIO.$GRUPO /home/$USUARIO/.bash_profile
chmod 664 /home/$USUARIO/.bash_profile
sed -i 's?MAX=2?MAX='$SESSOES'?g' /home/$USUARIO/.bash_profile
sed -i 's?export SACI_MYSQL_PSWD=""?export SACI_MYSQL_PSWD="'$SENHA'"?g' /home/$USUARIO/.bash_profile
mysql -u userdb -xxxxxx -e "CREATE USER '$USUARIO'@'saci1%' IDENTIFIED BY '$SENHA';"
mysql -u userdb -xxxxxx -e "GRANT ALL PRIVILEGES ON *.* TO '$USUARIO'@'saci1%' IDENTIFIED BY '$SENHA';"
dialog --msgbox 'Usuario adcionado com sucesso' 5 40
fi
Principal
}


Sequencialj1() {
GRUPO=saciuser
USUARIO=$(dialog --stdout --inputbox 'Digite o nome do novo usuario:' 0 0)

INICIO=$(dialog --stdout --inputbox 'Inicio da sequencia:' 0 0)
FIM=$(dialog --stdout --inputbox 'Fim da sequencia:' 0 0)

USE=$USUARIO"0"


for ((i=$INICIO; i<=$FIM; i++))
do
if [ $USUARIO$i = 'cut -d: -f1 /etc/passwd | grep -i $USUARIO$i' ] ; then
dialog --msgbox "O Usuario \n$USUARIO$i ja esta cadastrado no linux" 0 0
Principal
fi
done


for ((i=$INICIO; i<=$FIM; i++))
do
$SENHA=$USUARIO$i
useradd -g $GRUPO -d /home/$USUARIO$i -s /bin/bash -m $USUARIO$i
(echo $SENHA ; echo $SENHA) | passwd $USUARIO$i
cp -f $basedir/shells/bash_profilelj01 /home/$USUARIO$i/.bash_profile
chown $USUARIO$i.$GRUPO /home/$USUARIO$i/.bash_profile
chown $USUARIO$i.$GRUPO /home/$USUARIO$i/menu.sh
chmod 664 /home/$USUARIO$i/.bash_profile
chmod 777 /home/$USUARIO$i/menu.sh
sed -i 's?export SACI_MYSQL_PSWD=""?export SACI_MYSQL_PSWD="'$SENHA'"?g' /home/$USUARIO$i/.bash_profile
mysql -u userdb -xxxxxx -e "CREATE USER '$USUARIO$i'@'saci1%' IDENTIFIED BY '$SENHA';"
mysql -u userdb -xxxxxx -e "GRANT ALL PRIVILEGES ON *.* TO '$USUARIO$i'@'saci1%' IDENTIFIED BY '$SENHA';"

dialog --msgbox "O Usuario $USUARIO$i \nfoi adcionado com sucesso" 0 0
done

Principal
}


# Teste senha
chamaSenha() {

SENHA=$(dialog --stdout --title 'Senha' --passwordbox 'Por favor, digite a senha:' 0 0)

SENHA2=$(dialog --stdout --title 'Confirmacao' --passwordbox 'Por favor, confirme a senha:' 0 0)
if [ $SENHA != $SENHA2 ] ; then
dialog --msgbox 'Senha incorreta digite novamente' 5 40
chamaSenha
fi
}

# Sai do sistema
Sair() {
dialog --yesno 'Deseja sair do sistema?' 0 0
if [ $? = 0 ]; then
exit
else
Principal
fi
}
Principal



  


2. Re: Laço de repetição for / 168: Syntax error: Bad for loop variable [RESOLVIDO]

Wagner Souza
wagnerfs

(usa Fedora)

Enviado em 19/02/2015 - 14:15h

Executa o teu script no modo de depuração para entender o erro:

$ sh -x script.sh



_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782



3. Mesma coisa

Fernando Guilherme Alves Moreira
fernandoguialves

(usa CentOS)

Enviado em 19/02/2015 - 14:33h

root@saci1:/u/saci/shells# sh -x usersaci
+ basedir=/u/saci
usersaci: 168: Syntax error: Bad for loop variable





4. Re: Laço de repetição for / 168: Syntax error: Bad for loop variable [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/02/2015 - 14:53h

fernandoguialves escreveu:

root@saci1:/u/saci/shells# sh -x usersaci
+ basedir=/u/saci
usersaci: 168: Syntax error: Bad for loop variable



Você está usando alguma distribuição Linux? No Linux, o sh costuma ser um link simbólico para o bash e no bash o for no estilo da linguagem C é aceito mas no sh padrão não é.



5. Re: Laço de repetição for / 168: Syntax error: Bad for loop variable [RESOLVIDO]

Fernando Guilherme Alves Moreira
fernandoguialves

(usa CentOS)

Enviado em 19/02/2015 - 15:05h


Debian 6

Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze1) (dannf@debian.org) (gcc
version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Feb 25 00:26:11 UTC 2013



6. Re: Laço de repetição for / 168: Syntax error: Bad for loop variable [RESOLVIDO]

Fernando Guilherme Alves Moreira
fernandoguialves

(usa CentOS)

Enviado em 19/02/2015 - 15:20h


Valew galera... resolvido

#!/bin/bash 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts