[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] variavel no sed
From: |
Julio Neves |
Subject: |
Re: [shell-script] variavel no sed |
Date: |
Wed, 11 Apr 2001 11:19:32 -0300 |
ATENÇÃO, no momento não disponho do Linux para testar, mas eu faria assim:
function adiciona
{
while [ $USUARIO ];do
echo -n "Digite o login do usuario (8 caracteres): "
read USUARIO
done;
#Tira brancos iniciais e finais e trunca para nao haver problema
USUARIO=`echo "$USUARIO" | sed 's/^ *//' | sed 's/ *$//' | cut -c -8`
if sed -n "s/^$USUARIO//" /etc/passwd; then
echo "Este login ja esta sendo usado, favor verificar"
exit 1;
else
echo "Este login nao existe. Pode implementá-lo"
# Eu trocaria o echo acima por uma rotina de criação de usuário
fi
exit
### ...
# Na forma q de construção do if acima foi para aproveitar
# sua principal caracteristica que é testar instruções.
# Na construção do sed usei aspas que deixam o shell resolver a
# variável antes de executar o sed. O ^foi colocado para que
# a pesquisa seja efetuada somente no início do registro,
# despresando os comentários para o finger.
# Acho que neste caso o grep é melhor q o sed que que eu quero
# somente testar se o usuário existe ou não.
# Experimente:
if grep "^$USUARIO" /etc/passwd > /dev/null; then
Sucesso,
Julio C. Neves
Favor responder a address@hidden
Para: <address@hidden>
cc:
Assunto: [shell-script] variavel no sed
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/
:
:
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/
- Re: [shell-script] variavel no sed,
Julio Neves <=