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 <[EMAIL PROTECTED]>: > -----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 - [EMAIL PROTECTED] <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]