Como testar se uma variável possui um determinado valor?

1. Como testar se uma variável possui um determinado valor?

Marcos da Silva Camargo
mscamargo

(usa CentOS)

Enviado em 26/05/2015 - 01:41h

Olá, Pessoal!

Eu queria saber o seguinte. Como eu posso testar se uma variável recebeu um determinado valor, por exemplo, se o usuário inseriu uma "/" ele faz uma coisa, senão continua.

Exemplo:


echo -e -n "----------------------------------------
DIGITE O NOME DO GRUPO: "
read name_group
if [ -z $name_group ];
then
echo "----------------------------------------"
echo "VALOR INVALIDO!"; sleep 4;
else
groupadd $name_group
fi


Assim como eu testei se é inserido um valor vazio, eu quero testar se é inserido caracteres como "/", ".", ":", e etc...

Não sei se compreenderam, mas desde já agradeço a ajuda de quem puder me ajudar!


  


2. Re: Como testar se uma variável possui um determinado valor?

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/05/2015 - 03:18h

Olá.

Usando o BASH como shell eu faço assim:

Caso 1:

Por exemplo: uma variável chamada XR com o valor "a/b/c/d"


XR="a/b/c/d"
# aqui tem as suas barras como que se fossem subdiretórios, por exemplo

echo $XR
# naturalmente que echo retorna a/b/c/d

TESTE=${XR//\//}

# este é o pulo do gato. Esta estrutura de chaves ${} com barras faz uma substituição. Ele substitui o caracter / representado por \/ por nenhum caractere. Ou seja, se existir a barra na variável ele a apaga. Daí você compara a primeira variável com a segunda que se a segunda teve as barras apagadas o if acusa a diferença e daí ele faz o que você quer que ele faça.

echo $TESTE
# echo retorna abcd SEM as barras.

if [ $XR != $TESTE ]; then
. . .
else
. . .
fi

# A estrutura ${///} funciona assim:
# ${VARIAVELASERSUBSTITUIDA//OQUEEUQUEROSUBSTITUIR/OQUEENTRARÁCOMOSUSTITUIÇÂO}



Caso 2:

Você não quer depender do BASH e quer uma alternativa que sirva em outros casos. Usa-se SED. Eu posso fazer assim:


export XR="a/b/c/d"
# aqui tem as suas barras como que se fossem subdiretórios, por exemplo

echo $XR
# naturalmente que echo retorna a/b/c/d

TESTE=$(echo -n $XR | sed 's/\///g') # sed faz o que aquelas chaves fizeram
# a opção -n no echo é útil e faz com que ele não imprima uma mudança de linha.

echo $TESTE
# retorna abcd. E segue

if test $XR != $TESTE
then
. . .
else
. . .
fi


Se tiver um tempo veja se usar echo sem o -n faz diferença.
Qualquer dúvida retorne.

--
Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts