[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
Re: [shell-script] o qual é o erro????, Miranda, 2004/02/17