Erro na função If [RESOLVIDO]

1. Erro na função If [RESOLVIDO]

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 24/09/2018 - 08:36h

Estou montando um menu. esta dando erro no comando If, se tiverem alguma dica ou ajuda agradeço.

#!/bin/bash
PCM(){ PROMPT ;clear; PMENU;}

PROMPT()
{ printf "${CE}\e[18;$(( ($(tput cols)-46 )/2+1))f<< PRESSIONE QUALQUER TECLA PARA CONTINUAR >>${FC}";
read -e -n1 PRMPT ;
local PRMPT ;
}

PMENU()
{
#GERACOR;
COLS;
}


MENU() {
tput clear
printf "${CE}\e[2;${POS2}f----------------------------------------"
printf "\e[3;${POS1}f------------------ MENU ------------------"
printf "\e[4;${POS}f---\e[4;${POS3}f---"
printf "\e[5;${POS}f---${CSM} [1] Cadastrar [2] Listar ${CE}---"
printf "\e[6;${POS}f---${CSM} [3] Remover [4] Alterar ${CE}---"
printf "\e[7;${POS}f---${CSM} [5] Opção 5 [6] Opção 6 ${CE}---"
printf "\e[8;${POS}f---${CSM} [7] Cor Menu [8] Exit ${CE}---"
printf "\e[9;${POS}f---\e[9;${POS3}f---"
printf "${CE}\e[10;${POS1}f------------------------------------------"
printf "\e[11;${POS2}f----------------------------------------\n\n"$FC""
read -p " OPÇãO: " -n1 OPC

case "$OPC" in
1) FUNCAO_01 ;;
2) FUNCAO_02 ;;
3) FUNCAO_03 ;;
4) FUNCAO_04 ;;
5) echo -e "\n Criar FUNÇãO_05\n"; PCM ;;
6) echo -e "\n Criar FUNÇãO_06\n"; PCM ;;
7) echo -e "\n${CE} Centraliza e altera a cor do MENU${FC}"; sleep 1 ; PMENU ;;
8) echo -e "\n\n Saindo...\n";sleep 0.5; exit ;;
*) MSGM ; PMENU ;;
esac
}


COLS() {
COLS=$(tput cols)
POS=$(((COLS-44)/2+1))
POS1=$((POS+1))
POS2=$((POS+2))
POS3=$((POS2+39))
(($COLS>=44)) && MENU || { echo -e "$CVA AJUSTE A TELA!\n No MÍNIMO 44 Colunas $FC" ; PCM ; }
}

GERACOR() {
local cnt=$((1+RANDOM%31));local atb=$((RANDOM%2));
CSM="\e["$atb";38;5;"$cnt"m"
}

MSGM() { echo -e "$CVA\n\n \" OPÇãO INVáLIDA! \" $FC" ; sleep 1.25 ; }

FUNCAO_01() {
tput clear;
printf "\n";printf "Adicionar usuário: \n";
read $addusuario;
test $addusuario;
if "$?" != '1'
then
useradd $addusuario;
fi
echo "senha do usuario $addusuario: ";
read $addusuario_pass;
test $addusuario_pass;
if "$?" != '1';
then
passwd $addusuario_pass;
fi

PCM

}

FUNCAO_02() {
tput clear;
echo "Lista de usuarios:";
cat /etc/passwd | tr ':' '\t' |cut -f1 |grep -v \$$;

PCM
}

FUNCAO_03() {
tput clear;
echo "Deletar usuário: ";
read $delusuario;

cat /etc/passwd | tr ':' '\t' |cut -f1 |grep ${delusuario};
if ( "$?" != 1)
then
deluser $delusuario;
fi

PCM
}

FUNCAO_04() {
tput clear;
echo "Nome do usuario:";
read $senha_usuario;

cat /etc/passwd | tr ':' '\t' |cut -f1 |grep ${senha_usuario};
if ( "$?" != 1)
then

echo "senha do usuario $senha_usuario:";
passwd $senha_usuario;
fi

sleep 1;

PCM
}

PMENU

O erro e de comando não encontrado.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/09/2018 - 13:35h

jonasnl escreveu:

Estou montando um menu. esta dando erro no comando If, se tiverem alguma dica ou ajuda agradeço.

#!/bin/bash
PCM(){ PROMPT ;clear; PMENU;}

PROMPT()
{ printf "${CE}\e[18;$(( ($(tput cols)-46 )/2+1))f<< PRESSIONE QUALQUER TECLA PARA CONTINUAR >>${FC}";
read -e -n1 PRMPT ;
local PRMPT ;
}

PMENU()
{
#GERACOR;
COLS;
}


MENU() {
tput clear
printf "${CE}\e[2;${POS2}f----------------------------------------"
printf "\e[3;${POS1}f------------------ MENU ------------------"
printf "\e[4;${POS}f---\e[4;${POS3}f---"
printf "\e[5;${POS}f---${CSM} [1] Cadastrar [2] Listar ${CE}---"
printf "\e[6;${POS}f---${CSM} [3] Remover [4] Alterar ${CE}---"
printf "\e[7;${POS}f---${CSM} [5] Opção 5 [6] Opção 6 ${CE}---"
printf "\e[8;${POS}f---${CSM} [7] Cor Menu [8] Exit ${CE}---"
printf "\e[9;${POS}f---\e[9;${POS3}f---"
printf "${CE}\e[10;${POS1}f------------------------------------------"
printf "\e[11;${POS2}f----------------------------------------\n\n"$FC""
read -p " OPÇãO: " -n1 OPC

case "$OPC" in
1) FUNCAO_01 ;;
2) FUNCAO_02 ;;
3) FUNCAO_03 ;;
4) FUNCAO_04 ;;
5) echo -e "\n Criar FUNÇãO_05\n"; PCM ;;
6) echo -e "\n Criar FUNÇãO_06\n"; PCM ;;
7) echo -e "\n${CE} Centraliza e altera a cor do MENU${FC}"; sleep 1 ; PMENU ;;
8) echo -e "\n\n Saindo...\n";sleep 0.5; exit ;;
*) MSGM ; PMENU ;;
esac
}


COLS() {
COLS=$(tput cols)
POS=$(((COLS-44)/2+1))
POS1=$((POS+1))
POS2=$((POS+2))
POS3=$((POS2+39))
(($COLS>=44)) && MENU || { echo -e "$CVA AJUSTE A TELA!\n No MÍNIMO 44 Colunas $FC" ; PCM ; }
}

GERACOR() {
local cnt=$((1+RANDOM%31));local atb=$((RANDOM%2));
CSM="\e["$atb";38;5;"$cnt"m"
}

MSGM() { echo -e "$CVA\n\n \" OPÇãO INVáLIDA! \" $FC" ; sleep 1.25 ; }

FUNCAO_01() {
tput clear;
printf "\n";printf "Adicionar usuário: \n";
read $addusuario;
test $addusuario;
if "$?" != '1'
then
useradd $addusuario;
fi
echo "senha do usuario $addusuario: ";
read $addusuario_pass;
test $addusuario_pass;
if "$?" != '1';
then
passwd $addusuario_pass;
fi

PCM

}

FUNCAO_02() {
tput clear;
echo "Lista de usuarios:";
cat /etc/passwd | tr ':' '\t' |cut -f1 |grep -v \$$;

PCM
}

FUNCAO_03() {
tput clear;
echo "Deletar usuário: ";
read $delusuario;

cat /etc/passwd | tr ':' '\t' |cut -f1 |grep ${delusuario};
if ( "$?" != 1)
then
deluser $delusuario;
fi

PCM
}

FUNCAO_04() {
tput clear;
echo "Nome do usuario:";
read $senha_usuario;

cat /etc/passwd | tr ':' '\t' |cut -f1 |grep ${senha_usuario};
if ( "$?" != 1)
then

echo "senha do usuario $senha_usuario:";
passwd $senha_usuario;
fi

sleep 1;

PCM
}

PMENU

O erro e de comando não encontrado.


Boa tarde.
Para testar se a variável existe, faça:
if [ $addusuario ];then echo existe
else
echo Não existe.
fi

Marcelo Oliver


3. Re: Erro na função If

Natsu Dragneel
Natsu_Dragneel

(usa XUbuntu)

Enviado em 24/09/2018 - 09:02h

Sabe, eu não sou especialista, mais o IF eu uso assim:

if [ "$myvar" == "data" ]; then
# your code goes here :)
fi


Refs:. https://www.livrosdelinux.com.br/if-then-else/


4. Re: Erro na função If [RESOLVIDO]

Matheus
pylm

(usa Gentoo)

Enviado em 24/09/2018 - 09:36h

Em algumas distros o useradd ficam em /usr/sbin (que não faz parte do path do usuário) então você teria que rodar como root, ou logar como root só pra fazer essa parte do script mas aí eu já tenho ideia de como faz e você terá de esperar alguém experiente com shell script.


5. Re: Erro na função If [RESOLVIDO]

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 24/09/2018 - 09:40h

pylm escreveu:

Em algumas distros o useradd ficam em /usr/sbin (que não faz parte do path do usuário) então você teria que rodar como root, ou logar como root só pra fazer essa parte do script mas aí eu já tenho ideia de como faz e você terá de esperar alguém experiente com shell script.


Sim e estou fazendo o teste como root.
Pois esse menu só poderá ser executado pelo Administrador (Root).


6. Re: Erro na função If [RESOLVIDO]

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 24/09/2018 - 09:41h

Natsu_Dragneel escreveu:

Sabe, eu não sou especialista, mais o IF eu uso assim:

if [ "$myvar" == "data" ]; then
# your code goes here :)
fi


Refs:. https://www.livrosdelinux.com.br/if-then-else/


Eu tentei mais mesmo assim não funcionou...


7. Re: Erro na função If [RESOLVIDO]

Gabriel
rabbit

(usa Debian)

Enviado em 24/09/2018 - 10:17h

? é uma váriavel global pra testar o ultimo comando.

Sendo assim não precisa das aspas.

Teste sem as aspas e me dá um retorno aí.

---------------------------------------------
#!/bin/bash
echo "« Zh€lL »"


8. Re: Erro na função If [RESOLVIDO]

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 24/09/2018 - 11:08h

zhell escreveu:

$? é uma váriavel global pra testar o ultimo comando.

Sendo assim não precisa das aspas.

Teste sem as aspas e me dá um retorno aí.

---------------------------------------------
#!/bin/bash
echo "« Zh€lL »"


Funcionou sim, mas ele toda hora volta 1, não ta gravando na variável.



9. Re: Erro na função If [RESOLVIDO]

Gabriel
rabbit

(usa Debian)

Enviado em 24/09/2018 - 13:11h

O campo do if deve ficar assim:

if [ $? != "1" ];
then

OBS: Modifique todas as linhas com o comando para não dar mais erro.

Testei o código aqui no meu e foi normal.

---------------------------------------------
#!/bin/bash
echo "« Zh€lL »"


10. Re: Erro na função If [RESOLVIDO]

Gabriel
rabbit

(usa Debian)

Enviado em 24/09/2018 - 13:33h

Mais mano, uma pergunta, porque você está testando as variáveis?

read $addusuario
test $addusuario ???

No caso pra você ver o nome do usuário deveria ser echo $addusuario, caso seja isso que deseja.

---------------------------------------------
#!/bin/bash
echo "« Zh€lL »"


11. Re: Erro na função If

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 26/09/2018 - 08:13h

msoliver escreveu:

jonasnl escreveu:

Estou montando um menu. esta dando erro no comando If, se tiverem alguma dica ou ajuda agradeço.

#!/bin/bash
PCM(){ PROMPT ;clear; PMENU;}

PROMPT()
{ printf "${CE}\e[18;$(( ($(tput cols)-46 )/2+1))f<< PRESSIONE QUALQUER TECLA PARA CONTINUAR >>${FC}";
read -e -n1 PRMPT ;
local PRMPT ;
}

PMENU()
{
#GERACOR;
COLS;
}


MENU() {
tput clear
printf "${CE}\e[2;${POS2}f----------------------------------------"
printf "\e[3;${POS1}f------------------ MENU ------------------"
printf "\e[4;${POS}f---\e[4;${POS3}f---"
printf "\e[5;${POS}f---${CSM} [1] Cadastrar [2] Listar ${CE}---"
printf "\e[6;${POS}f---${CSM} [3] Remover [4] Alterar ${CE}---"
printf "\e[7;${POS}f---${CSM} [5] Opção 5 [6] Opção 6 ${CE}---"
printf "\e[8;${POS}f---${CSM} [7] Cor Menu [8] Exit ${CE}---"
printf "\e[9;${POS}f---\e[9;${POS3}f---"
printf "${CE}\e[10;${POS1}f------------------------------------------"
printf "\e[11;${POS2}f----------------------------------------\n\n"$FC""
read -p " OPÇãO: " -n1 OPC

case "$OPC" in
1) FUNCAO_01 ;;
2) FUNCAO_02 ;;
3) FUNCAO_03 ;;
4) FUNCAO_04 ;;
5) echo -e "\n Criar FUNÇãO_05\n"; PCM ;;
6) echo -e "\n Criar FUNÇãO_06\n"; PCM ;;
7) echo -e "\n${CE} Centraliza e altera a cor do MENU${FC}"; sleep 1 ; PMENU ;;
8) echo -e "\n\n Saindo...\n";sleep 0.5; exit ;;
*) MSGM ; PMENU ;;
esac
}


COLS() {
COLS=$(tput cols)
POS=$(((COLS-44)/2+1))
POS1=$((POS+1))
POS2=$((POS+2))
POS3=$((POS2+39))
(($COLS>=44)) && MENU || { echo -e "$CVA AJUSTE A TELA!\n No MÍNIMO 44 Colunas $FC" ; PCM ; }
}

GERACOR() {
local cnt=$((1+RANDOM%31));local atb=$((RANDOM%2));
CSM="\e["$atb";38;5;"$cnt"m"
}

MSGM() { echo -e "$CVA\n\n \" OPÇãO INVáLIDA! \" $FC" ; sleep 1.25 ; }

FUNCAO_01() {
tput clear;
printf "\n";printf "Adicionar usuário: \n";
read $addusuario;
test $addusuario;
if "$?" != '1'
then
useradd $addusuario;
fi
echo "senha do usuario $addusuario: ";
read $addusuario_pass;
test $addusuario_pass;
if "$?" != '1';
then
passwd $addusuario_pass;
fi

PCM

}

FUNCAO_02() {
tput clear;
echo "Lista de usuarios:";
cat /etc/passwd | tr ':' '\t' |cut -f1 |grep -v \$$;

PCM
}

FUNCAO_03() {
tput clear;
echo "Deletar usuário: ";
read $delusuario;

cat /etc/passwd | tr ':' '\t' |cut -f1 |grep ${delusuario};
if ( "$?" != 1)
then
deluser $delusuario;
fi

PCM
}

FUNCAO_04() {
tput clear;
echo "Nome do usuario:";
read $senha_usuario;

cat /etc/passwd | tr ':' '\t' |cut -f1 |grep ${senha_usuario};
if ( "$?" != 1)
then

echo "senha do usuario $senha_usuario:";
passwd $senha_usuario;
fi

sleep 1;

PCM
}

PMENU

O erro e de comando não encontrado.


Boa tarde.
Para testar se a variável existe, faça:
if [ $addusuario ];then echo existe
else
echo Não existe.
fi

Marcelo Oliver


Já fiz isso... e aparece que a variável não existe.
Consegui
vi que tinha esquecido de tirar $ da variável fazendo assim ela não existir por estar com outro nome.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts