Pular para o conteúdo

Validar String com Espaço [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Validar String com Espaço [RESOLVIDO]

Enviado em 11/05/2010 - 17:22h

Criei um shell script para municiar um arquivo de texto com os sites liberados pelo meu squid (sitelib).
Para validar o motivo de liberacao do site usei como parte do script, a resposta dada ao usuário mmedinabr no seguinte link:
http://www.vivaolinux.com.br/topico/Shell-Script/Validar-STRING
Porém quando digito o motivo e uso espaço para separar as palavras, ele não valida o espaço e volta para digitar, quando digito sem espaçar as palavras do motivo funciona(só assim)
Preciso validar o espaço. Gostaria de saber se está certo a ideia do script.
O script tem objetivo de fazer com que seja cadastrado os sites liberados sem que entre na pasta de configuração do squid, bastante apenas chamar o script.

#!/bin/bash
echo "______________________________________________________________"
echo " Por meio desse script pode ser definidas os sites a liberar: "
echo " Coloque o site sem o wwww. (ex: globo.com) "
echo " Digite o site a ser liberado "
read site
while true
do
echo " Digite o motivo da liberacao do site (maximo 50 caracteres): "
read motivo
echo $motivo |grep -qs '^[a-z]\{1,50\}$' && break
done
echo "$site # $motivo" >> /etc/squid/sitelib
squid -k reconfigure
echo " Site Liberado "
echo "______________________________________________________________"


Agradeço a todos desde já!

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Validar String com Espaço [RESOLVIDO]

Melhor resposta

Enviado em 11/05/2010 - 20:41h

O que o SMarcell falou é verdade, mas no seu script o erro está na expressão regular do grep.

Veja que com ela você diz para o grep "procurar somente caracteres no intervalo a-z que podem aparecer em qualquer quantidade de 1 a 50".

O "erro" ocorre porque o espaço não está em sua regexp e quando ele aparece na string lida, o grep retorna falso e assim o break não é executado.

Mude:
echo $motivo |grep -qs '^[a-z]\{1,50\}$' && break

para

echo $motivo |grep -qs '^[a-z ]\{1,50\}$' && break

Baahhh.. classes POSIX são um saco, mas tornam a regexp mais geral (aceita tabs e outros caracteres considerados espaços):

echo $motivo |grep -qs '^[a-z[:space:]]\{1,50\}$' && break

Espero ter ajudado.
t+

3. Re: Validar String com Espaço [RESOLVIDO]

Enviado em 11/05/2010 - 17:39h

Variáveis cujo conteúdo contenha espaços em branco, devem sempre ser protegidas com aspas.

4. Valeu, resolvido.

Enviado em 12/05/2010 - 08:22h

SMarcell agradeço, caso o amigo Daemonio não postasse o que fazer iria pesquisar sobre sua dica, como ele postou e deu certo, agradeço então aos 2. Daemonio valeu.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder