shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

variavel no sed


From: Mauricio Vieira
Subject: variavel no sed
Date: Tue, 10 Apr 2001 18:59:40 -0300 (BRT)

Como faco para 'escapar' a variavel dentro de um bloco sed?

sei que poderia usar cut e grep, mas quero usar o sed.

### ...

function adiciona
{
while [ -z $USUARIO ];do
        echo -n "Digite o login do usuario (8 caracteres): "
        read USUARIO
done;
#Trunca para nao haver problema
USUARIO=`echo "${USUARIO}" | cut -c -8`

EXISTENTE=` sed -n 's/\(\${USUARIO}\).*/\1/p' /etc/passwd `;

echo $EXISTENTE;
if ! [ -z ${EXISTENTE} ]; then
        echo "Este login ja esta sendo usado, favor verificar"
        exit 1;
else
        echo $EXISTENTE;
fi
exit 2;
### ...

$EXISTENTE nao retorna nada. tentei $USUARIO mas tbm nao consegui(ele
interpreta o $ como final de linha e a string USUARIO como a palavra da
regexp). mas se coloco o nome do usuario diretamente no bloco (por exemplo
EXISTENTE=` sed -n 's/\(mvieira\).*/\1/p' /etc/passwd `;) funciona.

obrigado por qualquer ajuda.

[]'s

Mauricio Vieira - Ciencia da Computacao UFBA
----------------------------------------------------------------------
The connection between the language in which we think/program and the
problems and solutions we can imagine is very close.  For this reason
restricting language features with the intent of eliminating programmer
errors is at best dangerous.
                -- Bjarne Stroustrup


On Tue, 10 Apr 2001, # aurelio marinho jargas wrote:

:olá juari,
:
:@ 19/4, Juari Ritter Mueller:
:
:> Para arquivos no diretório corrente:
:> for i in *; do mv "$i" "$(echo "$i"|tr [A-Z] [a-z])"; done
:>
:> Para arquivos cobrindo toda uma árvore de diretórios:
:> i="blah"
:> find . |
:>   while [ -n "$i" ]; do
:>     read i
:>     mv "$i" "$(echo "$i"|tr [A-Z] [a-z])"
:>   done
:> PS: NAO TESTADO
:
:ao invés de fazer o find|while, você pode usar a mesma estrutura
:do primeiro e apenas trocar o * pelo find . usando uma subshell:
:
:for i in `find . -type f` ; do mv "$i" "`echo $i|tr A-Z a-z`"; done
:
:
:
:* note que a sintaxe do tr é A-Z e a-z, SEM os colchetes.
:  os colchetes são meros caracteres normais, e fazendo [A-Z] e [a-z]
:  você troca [ por [ e ] por ] &:)
:
:
:do man tr:
:
:          Faixas. A notação `m-n' expande para todos os caracteres de m a
:          n, em ordem  ascen­ dente. m deve ser menos que n; caso
:          contrário ocorrerá um erro. Por exemplo `0-9' é o mesmo que
:          `0123456789'.  Ainda que tr não suporta a sintaxe do System V
:          que  usa colchetes  para delimitar faixas, a alteração
:          especificada neste formato funcionará como se os colchetes em
:          expr1 correspondessem a colchetes idênticos em expr2.
:
:
:--
:s·:(·>(·×^a]×http://www.verde666.org×^[:wq
:
:
:
:Sair da lista: address@hidden
:Banco Dados:   http://www.egroups.com/group/shell-script
:
:Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
http://docs.yahoo.com/info/terms/
:
:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]