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: César Vianna
Subject: Re: [shell-script] Ignorar erros em um laço
Date: Thu, 17 Jul 2008 15:24:15 -0300

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





2008/7/17 MrBiTS <address@hidden>:

>   -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> | Realmente, tentei simplificar a pergunta, mas faltaram dados. Segue o
> script
> | completo.
> |
> | #!/bin/bash
> | NOVA_QUOTA=30720
> | for i in `cat perfil0.txt`
> | do
> | 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
> | done
>
> Simplificar nem sempre é o melhor caminho, ainda mais numa descrição de
> problemas.
>
> Vejamos. Você havia dito que, quando um arquivo ( $i ) não existe, o
> laço é interrompido. Na verdade, nunca teremos um $i sozinho, mas sempre
> um user.$i. Nesse caso, se user.$i não existe, a variável $utilizado não
> ~ terá nenhum valor e a comparação $n_quota_bytes -gt $utilizado dará um
> erro e, aí sim, quebrará o laço. Creio ser esse o seu problema. Falto a
> mensagem de erro.
>
> Para certificar-se, rode o seu script com um bash -x ./script e
> analise/poste o resultado.
>
> Do resto, não há nada que faça o laço ser quebrado. Os comandos mv e sed
> não quebram laços quando falham, a não ser que você mande o script fazer
> isso explicitamente.
>
> - --
>
> Um abraço
>
> .0. MrBiTs - address@hidden <mrbits%40linuxmasters.info>
> ..0 GnuPG -
> http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
> 000 http://www.mrbits.com.br
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (Cygwin)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iEYEARECAAYFAkh/hYIACgkQrDdxWm3R8YajywCfTxcoqP0QJA5CyRLIv4XcXThK
> MLwAn0jKIBfbwE0/o8yJPQSK4Espe2R3
> =LqRt
> -----END PGP SIGNATURE-----
>  
>



-- 
César Vianna
-------------------
"Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo
entre a realidade que existe e o sonho, que é a realidade que não existe."
Fernando Pessoa


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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