Pular para o conteúdo

Ajuda com if [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 07:02h

Bom dia,


#!/bin/bash
clear
source /bin/vcores
read -p "Digite sua mensagem: " msg
if [ !z $msg ]
then
clear
echo -e "$fvermelho Mensagem vazia ! $fc"
exit 1
else
echo -e "$fazul $msg $fc"
notify -t "$msg" &>/dev/null
fi


Este pequeno script apresenta erro, porem nao sei onde errei. O erro esta em "if ,then e else"

Responder tópico

2. Re: Ajuda com if

Melhor resposta

Enviado em 15/08/2017 - 09:10h

Encontrei 2 problemas.

1) A sintaxe deveria ser;
A exclamação no if inverte o funcionamento do if.

if ! [ -z $msg ]



ou
A exclamação no test [] inverte o funcionamento do test.

if [ ! -z $msg ]




2) A lógica me parece errada, você não deveria tentar negar o parâmetro -z. Você obterá o resultado inverso, ao conter algo na sua mensagem será dito que a mensagem está vazia.

O meu exemplo seria esse.

#!/bin/bash
read -p "Digite sua mensagem: " msg
if [ -z $msg ]; then
clear
echo -e "Mensagem vazia !"
exit 1
else
echo -e "$msg"
fi




3. Re: Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 09:17h

patrickpcs escreveu:

Encontrei 2 problemas.

1) A sintaxe deveria ser;
A exclamação no if inverte o funcionamento do if.

if ! [ -z $msg ]



ou
A exclamação no test [] inverte o funcionamento do test.

if [ ! -z $msg ]




2) A lógica me parece errada, você não deveria tentar negar o parâmetro -z. Você obterá o resultado inverso, ao conter algo na sua mensagem será dito que a mensagem está vazia.

O meu exemplo seria esse.

#!/bin/bash
read -p "Digite sua mensagem: " msg
if [ -z $msg ]; then
clear
echo -e "Mensagem vazia !"
exit 1
else
echo -e "$msg"
fi



No caso pensei em:
- Verifique se esta vazio, se sim diga que esta vazio... Se nao execute x funçao

4. Re: Ajuda com if

Enviado em 15/08/2017 - 10:10h

Use o tamanho da variável "msg":


#!/bin/bash
read msg
if ((${#msg})); then
echo true;
else
echo false
fi


Se estiver vazia essa condição ecoa "false", se não, ecoa true. Se quiser fazer outra coisa é só substituir.



______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/

5. Re: Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 10:47h

celiomagalhaesjr escreveu:
No caso pensei em:
- Verifique se esta vazio, se sim diga que esta vazio... Se nao execute x funçao
Acredito que estás confundindo -z com -n.
Veja o que diz o man test.


-n STRING
the length of STRING is nonzero

-z STRING
the length of STRING is zero
Embora a lógica na sua cabeça esteja correta, o que você escreveu é o seguinte (negando o parametro z)
Se a msg !(negação) for vazia, então diga que a mensagem está vazia,
Se não, (se vazia de fato estiver) diga a mensagem.
Sacou?

6. Re: Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 12:04h

patrickpcs escreveu:

celiomagalhaesjr escreveu:
No caso pensei em:
- Verifique se esta vazio, se sim diga que esta vazio... Se nao execute x funçao
Acredito que estás confundindo -z com -n.
Veja o que diz o man test.


-n STRING
the length of STRING is nonzero

-z STRING
the length of STRING is zero
Embora a lógica na sua cabeça esteja correta, o que você escreveu é o seguinte (negando o parametro z)
Se a msg !(negação) for vazia, então diga que a mensagem está vazia,
Se não, (se vazia de fato estiver) diga a mensagem.
Sacou?


Entendi sim... Obrigado

7. Re: Ajuda com if

Enviado em 15/08/2017 - 12:04h


Segue opção:
[ "$msg" ] && echo "Mensagem existe" || echo "Mensagem não existe" 


Att.:
marcelo oliver

8. Re: Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 12:08h

msoliver escreveu:

celiomagalhaesjr escreveu:

Bom dia,


#!/bin/bash
clear
source /bin/vcores
read -p "Digite sua mensagem: " msg
if [ !z $msg ]
then
clear
echo -e "$fvermelho Mensagem vazia ! $fc"
exit 1
else
echo -e "$fazul $msg $fc"
notify -t "$msg" &>/dev/null
fi


Este pequeno script apresenta erro, porem nao sei onde errei. O erro esta em "if ,then e else"
Segue opção:
[ "$msg" ] && echo "Mensagem existe" || echo "Mensagem não existe" 


Att.:
marcelo oliver


Marcelo, poderia me explicar o que foi declarado... So para eu entender e futuramente seguir a mesma logica.
Obrigado

9. Re: Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 12:15h

celiomagalhaesjr escreveu:

msoliver escreveu:

celiomagalhaesjr escreveu:

Bom dia,


#!/bin/bash
clear
source /bin/vcores
read -p "Digite sua mensagem: " msg
if [ !z $msg ]
then
clear
echo -e "$fvermelho Mensagem vazia ! $fc"
exit 1
else
echo -e "$fazul $msg $fc"
notify -t "$msg" &>/dev/null
fi


Este pequeno script apresenta erro, porem nao sei onde errei. O erro esta em "if ,then e else"
Segue opção:
[ "$msg" ] && echo "Mensagem existe" || echo "Mensagem não existe" 


Att.:
marcelo oliver


Marcelo, poderia me explicar o que foi declarado... So para eu entender e futuramente seguir a mesma logica.
Obrigado


Boa tarde Celio, fiz na correria e faltou o "read", segue:
read -p "Digite sua mensagem: " msg
[ "$msg" ] && echo "Mensagem existe" || echo "Mensagem não existe"

É testada a var msg, se existir . . . . Se não existir . . .

MSO



10. Re: Ajuda com if [RESOLVIDO]

Enviado em 15/08/2017 - 12:19h

msoliver escreveu:

celiomagalhaesjr escreveu:

msoliver escreveu:

celiomagalhaesjr escreveu:

Bom dia,


#!/bin/bash
clear
source /bin/vcores
read -p "Digite sua mensagem: " msg
if [ !z $msg ]
then
clear
echo -e "$fvermelho Mensagem vazia ! $fc"
exit 1
else
echo -e "$fazul $msg $fc"
notify -t "$msg" &>/dev/null
fi


Este pequeno script apresenta erro, porem nao sei onde errei. O erro esta em "if ,then e else"
Segue opção:
[ "$msg" ] && echo "Mensagem existe" || echo "Mensagem não existe" 


Att.:
marcelo oliver


Marcelo, poderia me explicar o que foi declarado... So para eu entender e futuramente seguir a mesma logica.
Obrigado


Boa tarde Celio, fiz na correria e faltou o "read", segue:
read -p "Digite sua mensagem: " msg
[ "$msg" ] && echo "Mensagem existe" || echo "Mensagem não existe"

É testada a var msg, se existir . . . . Se não existir . . .

MSO




Obrigado

11. Re: Ajuda com if [RESOLVIDO]

Enviado em 16/08/2017 - 08:50h

Quero agradecer a todos pelo apoio, saibam que vcs aqui do VOL estam me ajudando muito... Marcarei o topico como fechado, decidi escolher a primeira resposta como a melhor por ter resolvido meu problema, porem todos os comentarios me ajudaram a obter conhecimento.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder