[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] arquivos com espaco no nome
From: |
Julio Neves |
Subject: |
Re: [shell-script] arquivos com espaco no nome |
Date: |
Wed, 30 May 2001 11:09:59 -0300 |
Favor responder a address@hidden
Enviado Por: <address@hidden>
Para: <address@hidden>
cc:
Assunto: Re: [shell-script] arquivos com espaco no nome
Julio Neves, @ 09:58:
> E se vc fizer asim sem o pipe:
> A=0
> while read linha; do
> A=$((A+1))
> done < arquivo
> echo $A
>
> Vc perde em legibilidade mas deve ganhar o set -x de volta.
Boa! Não testei sobre o -x, mas já resolve o problema das variáveis em
subshell se perderem.
Agora falta uma solução para quando a entrada não vier de um arquivo, como
um 'sed "s/a/b/g" arquivo | while read linha do ... done'
... mas ainda prefiro o for com IFS ';)
[ ]'s
--
Eliphas
Eu já treinei diversas turmas de Programação Shell e o q sempre fiz
questão de frisar é que nas linguagens "caretas" o for e o while teem
quase a mesma função, só que no for o incremento é automático. No Shell os
2 são muito diferentes, enquanto o for foi feito para parâmetros o while,
assim como o if e o until, foram feitos para testar instruções, assim, o
while do exemplo acima está testando se o read não ganhou um EOF.
Veja bem Eliphas, não estou em desacordo com vc, mas acho as instruções de
loop e de teste condicional o ponto alto do Shell e procuro sempre usá-los
o mais próximos de suas caracterÃsticas básicas. Por exemplo para fazer
100 loops fica difÃcil fugir do tradicional:
A=0
while [ $A - lt 100 ]
do
A=$((A+1))
done
Para fazer o mesmo em C, com certeza faria:
for (A=0; A < 100; A++);
Já que este é o uso tÃpico do for nas outras linguagens.
Amigo Eliphas, não sei se consegui passar o q penso sobre estes comandos,
mas no duro, evito dizer que prefiro usar somente esse ou aquele, já que
cada um tem as suas caracterÃsticas próprias.
Ah! Por falar em IFS veja só que legal o uso do IFS com while:
IFS=:
while read lname lixo uid gid coment hdir shini
do
echo -e "LoginName: $lname\nUser-id: $uid\n...Shell Inicial:
$shini\n\n"
done < /etc/passwd
Agora só pra finalizar, que já estou enchendo o teu saco e o de todos,
suponha que eu tenha um arquivo que contenha o nome das máquinas da minha
rede e para cada máquina os diversos usuários que teem login nela. Para
mandar um e-mail para todos os usuários, olha só que barato (e que
facilidade) o for e o while usados juntos:
cat arquivo |
while read Maquina Usuarios
do
for Usuario in $Usuarios
do
mail "$Usuario@$Maquina" << FimMail
Curitiba, `date "+%d/%b/%y`
Senhor(a) usuario(a) da rede ...
...
Abraços do admin da rede
FimMail done
done
Saudações rubro negras a todos,
Julio
PS: Me empolguei! O e-mail está muito grande.
From (no email address) Wed May 30 08:46:05 2001
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-7_1_3); 30 May 2001 15:46:05 -0000
Received: (qmail 47023 invoked from network); 30 May 2001 15:44:51 -0000
Received: from unknown (10.1.10.142) by l9.egroups.com with QMQP; 30 May 2001
15:44:51 -0000
Received: from unknown (HELO perninha.conectiva.com.br) (200.250.58.156) by
mta3 with SMTP; 30 May 2001 15:44:49 -0000
Received: from burns.conectiva (burns.conectiva [10.0.0.4]) by
perninha.conectiva.com.br (Postfix) with SMTP id BBC7516B85 for
<address@hidden>; Wed, 30 May 2001 12:22:57 -0300 (EST)
Received: (qmail 15980 invoked by uid 0); 30 May 2001 15:21:28 -0000
Received: from verde.distro.conectiva (10.0.17.77) by burns.conectiva with
SMTP; 30 May 2001 15:21:28 -0000
Date: Wed, 30 May 2001 12:30:53 -0300 (BRT)
X-Sender: verde@verde.distro.conectiva
To: address@hidden
Subject: Re: [shell-script] script pra md5sum
In-Reply-To: <01052917115000.00748@hadar>
Message-ID: <Pine.LNX.4.21.0105301228450.5966-100000@verde.distro.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
X-eGroups-From: # aurelio marinho jargas <address@hidden>
From: # aurelio marinho jargas <address@hidden>
@ 29/5, wiking:
>
> olha pessoal..
>
> to com uns probleminhas com o arquivo checksum.md5
> peguei um iso .. e o md5sum naum confere..
> entaum montei ele e vi q dentro de todas as pastas tem o checksum.md5
> entaum to afim de ir atras do arquivo corrompido ..
> mas o formato dele ta assim:
> MD5 (install.sh) = dc2f54ded38b5d2d1f96f625585a40ec
>
> e o md5sum q uso no linux .. precisa ser:
> dc2f54ded38b5d2d1f96f625585a40ec install.sh
>
> alguem saberia como posso fazer um script para inverter a ordem?
> primeiro a chave depois o nome do arquivo
sed 's/.*(\([^)]*\)) = \(.*\)/\2 \1/' checksum.md5
--
s·:(·>(·×^a]×http://www.verde666.org×^[:wq