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

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

Re: [shell-script] Ignorar erros em um laço


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Ignorar erros em um laço
Date: Thu, 17 Jul 2008 15:33:15 -0300

Vejamos

$ ls -1
arquivo.flv
CVS
lib
testes_funcionais.pl

$ cat /tmp/list
arquivo.flv
CVS
xxxxxx
lib
testes_funcionais.pl
lalala

$ xargs ls -d1 < /tmp/list 2>&-
arquivo.flv
CVS
lib
testes_funcionais.pl

O que eu fiz: usei o ls para filtrar os arquivos que existem no
diretorio corrente.

se a minha lista tiver os caminhos completos dos arquivos, eu posso
filtrar a lista sem ter que fazer testes dentro do laço, o que pode
ser custoso.

2008/7/17 César Vianna <address@hidden>:
> Exato. Segue o erro.
>
> $ bash -x ./script.sh
> ++ cat perfil0.txt
> + for i in '`cat perfil0.txt`'
> ++ head -1 /var/lib/imap/quota/q/user.a
> head: não foi possível abrir `/var/lib/imap/quota/q/user.a' para leitura:
> Arquivo ou diretório não encontrado
> + utilizado=
> ./script.sh: line 6: *1024: syntax error: operand expected (error token is
> "*1024")
>
> Acabei colocando mais um test. Aumentou o tempo de execução, mas funcionou.
>
> #!/bin/bash
> NOVA_QUOTA=30720
> for i in `cat perfil0.txt`
> do
> if [ -e /var/lib/imap/quota/q/user.$i ]
> then
> utilizado=`head -1 /var/lib/imap/quota/q/user.$i`
> n_quota_bytes=$(($NOVA_QUOTA*1024))
> if [ $n_quota_bytes -gt $utilizado ]
> then
> mv /var/lib/imap/quota/q/user.$i
> /var/lib/imap/quota/q/user.$i.old
> sed "2s/.*/$NOVA_QUOTA/"
> /var/lib/imap/quota/q/user.$i.old > /var/lib/imap/quota/q/user.$i;chown
> cyrus.mail /var/lib/imap/quota/q/user.$i
> else
> echo $i - $(($utilizado/1024/1024)) >>
> quotas-cheias.txt
> fi
> fi
> done


reply via email to

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