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

[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.


reply via email to

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