Ajuda com if [RESOLVIDO]

1. Ajuda com if [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

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"


  


2. MELHOR RESPOSTA

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

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]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

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

Jeffersson Abreu
ctw6av

(usa Nenhuma)

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]

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

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]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

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

Marcelo Oliver
msoliver

(usa Debian)

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]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

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]

Marcelo Oliver
msoliver

(usa Debian)

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]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

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]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts