[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: [shell-script] Erro no shell script
From: |
Gustavo Chaves |
Subject: |
Re: RES: [shell-script] Erro no shell script |
Date: |
22 Feb 2005 14:50:07 -0300 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 |
>>>>> On Tue, 22 Feb 2005 13:29:32 -0300, "Renato L. Sousa" <address@hidden>
>>>>> said:
> Hummmm... Estou usando o bash (/bin/bash), e pelo q vi o sh no linux é
> um link pro bash, então deveria funcionar, não ???
Acho que sim. Mas consegui reproduzir seu problema aqui. Também não
entendi... parece que a bash não entende o redirecionamento de
processos depois de um while...done.
>> | while read user; do
>> | if [ -d $user -a $(grep -w $user /etc/passwd) ]; then
>> | echo -ne "Atribuindo quota do usuário $user...\t"
>> | edquota -u $dir -p quota_model && echo "OK" || echo "Falhou"
>> | fi
>> | done < <(ls /home)
Consegui contornar o problema usando pipe ao invés do redirecionador.
Assim:
ls /home | while read user; do
...
done
Mas há outro problema. Você deve colocar aspas em torno do $(grep...)
pois se ele não voltar nada o comando test (a.k.a. "[") vai reclamar
da falta de um argumento. A versão final ficaria assim:
ls /home | while read user; do
if [ -d $user -a "$(grep -w $user /etc/passwd)" ]; then
echo -ne "Atribuindo quota do usuário $user...\t"
edquota -u $dir -p quota_model && echo "OK" || echo "Falhou"
fi
done
Gustavo.