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

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

Re: [shell-script] o_qual_é_o_erro????


From: Felipe Kellermann
Subject: Re: [shell-script] o_qual_é_o_erro????
Date: Wed, 18 Feb 2004 15:26:26 -0300 (BRT)

On Wed, 18 Feb 2004 9:04am  -0300, Lynn karllo wrote:

> 17.0
> 1.0
> 2.3
> 9.0
>
> - Meu script teria que somar essa coluna
> - Dizer quantos discos de 9.0 tem, quantos discos de 2.3 tem e etc...
>
> Uma duvida: teria como criar esse script sem  o "while read linha" ?

Há várias formas de fazer isto. O teu problema antes era com o pipe. Tu
pode fazer como o Thobias disse. Falei com o Júlio Neves e ele lembrou de
usar substituição de processos para fazer direto aqui (é uma feature da
bash, mas tu tá usando ela...). A lista, por exemplo, para o caso do `ls':

$ while read f; do echo $f; done < <(\ls -la /tmp/sh*)
-rw------- 1 stdfk users 0 Feb 8 05:28 /tmp/sh-thd-1076200129
-rw------- 1 stdfk users 0 Feb 8 05:24 /tmp/sh-thd-1076200149
-rw------- 1 stdfk users 0 Feb 8 05:24 /tmp/sh-thd-1076208991
$ while read f; do echo $f|cut -d\  -f7; done < <(\ls -la /tmp/sh*)
8
8
8

Teu caso é uma lista. É um pouco diferente.
Uma maneira de fazer sem o `while' é:

$ cat lista
0,0,9.0,0
0,1,8.0,0
0,2,17.0,0
0,3,1.0,0
0,4,2.3,0
0,5,9.0,0
$ for i in $(<lista); do echo $i|cut -d, -f3; done
9.0
8.0
17.0
1.0
2.3
9.0

A substituição $(<lista) é padrão, pode usar sem problemas.
Pode fazer o mesmo com `while':

$ while read i; do echo $i|cut -d, -f3; done < lista
9.0
8.0
17.0
1.0
2.3
9.0

A contagem dos discos especificados e a soma fica contigo.
Tenta, testa e envia quaisquer dúvidas. Até mais,

-- 
Felipe Kellermann


reply via email to

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