Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
site google



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-12-2008
Usuário
 

Join Date: Mar 2008
Lugares: 10
Problema muito irritante - Please Help

Hey Guys

Eu tenho um problema muito chato com expressões regulares! Neste momento acredito que o comando 'ler' está causando o problema, devido ao transporte, uma vez que coloca o seu regresso feito.

Tenho um ciclo contínuo até que a entrada está correcto: (Após a leitura inicial declaração)


Código:
while [ 0 ]
        do
                if [[ "$word" == [a-z]+ ]]
                then
                        word=$(echo $word | tr "[A-Z]" "[a-z]")
                        encrypted=$(echo $word | tr "[a-z]" "-")
                        display $encrypted $word
                        break
                else
                        echo "Please enter a word consisting of only the letters a-z."
                        read word
                fi
        done

Whats em negrito é o problema. Cada vez que chega a ele, nada é permitido! Nem mesmo se a entrada é totalmente válida como em:

abcd

O que eu quero fazer é aceitar apenas caracteres az e nada mais - sem espaços quer. Em teoria, deve funcionar, no entanto, na prática Eu realmente acredito que a 'ler' comando está a dar-me o problema. Talvez um chop-esque função é necessária, como o de um perl.

Espero que vocês possam ajudar! Obrigado. -reservatório é BASH
Links Patrocinados
  #2 (permalink)  
Old 03-12-2008
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.150
Bem eu não sou uma super bash perito, mas que não adivinhou o que eu poderia ...
Código:
bash-2.03$ x="abc"
bash-2.03$ [[ $x == [a-z]+ ]] && echo it matches
bash-2.03$ x="d+"
bash-2.03$ [[ $x == [a-z]+ ]] && echo it matches
it matches
bash-2.03$

  #3 (permalink)  
Old 03-12-2008
Usuário
 

Join Date: Mar 2008
Lugares: 10
Sim, ela parece tão inútil ... Ou a sintaxe está errada ou os caras por trás do desenvolvimento do BASH tenho presente um pouco mal ...

Quero dizer que eu posso fazer é individualmente verificar cada personagem, mas sua excessiva código - 5 linhas em comparação com 1. Portanto, se os peritos pode me dar alguns conselhos, seria muito apreciado.

Obrigado.
  #4 (permalink)  
Old 03-12-2008
drl's Avatar
DRL drl is offline Forum Advisor  
Usuário
 

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 779
Oi.

O suplente sintaxe parece funcionar:

Código:
#!/bin/bash3 -

# @(#) s1       Demonstrate extended glob matching.
# See man bash "Pattern matching" and extglob shopt.

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version =o $(_eat $0 $1)

x="abc"
if [[ $x == [a-z]+ ]]
then
  echo " Matched trailing +."
fi

shopt -s extglob
if [[ $x == +([a-z]) ]]
then
  echo " Matched leading +."
fi

exit 0

Produção:

Código:
% ./s1
(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash 3.00.16(1)-release
 Matched leading +.

Muitas felicidades ... cheers, DRL
  #5 (permalink)  
Old 03-12-2008
Usuário
 

Join Date: Mar 2008
Lugares: 10
Ei DRL,

Isso não funciona no meu fim, possivelmente porque o reservatório é im bash3 mas não sei bem a diferença entre ele e bash. Tentei usar o reverso sintaxe, mas não existe sorte, eu tenho alguns erros ao fazê-lo.

Faz pareço eu vou ter que usar alguns mais código - apenas parece tão bobo que este pequeno bug (se thats o que ele realmente é) está a causar-me dor lol. Obrigado pela vossa ajuda embora.
  #6 (permalink)  
Old 03-12-2008
drl's Avatar
DRL drl is offline Forum Advisor  
Usuário
 

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 779
Oi.

O shell que você está usando? ... cheers, DRL
  #7 (permalink)  
Old 03-12-2008
Usuário
 

Join Date: Mar 2008
Lugares: 10
GNU bash, versão 3.1.17 (1)-release (i686-redhat-linux -gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

É isso o que eu estou usando no momento.
Links Patrocinados
Closed Thread

Marcadores

Tags
linux, regex, expressões regulares

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Desligado


Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
problema com o comando dd ou talvez AFS problema Anta Programação Shell Script e 0 08-25-2006 11:10
annoying vi puxão palavra + apagar todos pergunta umen UNIX para Dummies Perguntas & Respostas 4 03-20-2006 08:46
Problema SSH auth problema budrito UNIX & avançada para usuários experientes 1 03-17-2004 10:12
um problema muito chato Stormpie UNIX para Dummies Perguntas & Respostas 2 04-24-2002 01:29



Todos os horários são GMT -4. A hora é agora 10:52.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Brasil Content Copyright © 1993-2010. Todos os direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0