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

[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



reply via email to

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