[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: RES: [shell-script] Erro no shell script
From: |
Rodolfo Villanova |
Subject: |
RES: RES: [shell-script] Erro no shell script |
Date: |
Tue, 22 Feb 2005 16:16:04 -0300 |
Fala, professor Julio!
Não tentei fazer adaptações à linha proposta pra ela executar sem erro;
copiei e colei no prompt dos ambientes em que convivo, e depois testei
também executando dentro de um arquivo que chama o /bin/ksh, mas a mensagem
de erro foi "quase" a mesma.
Num Compaq Tru64 UNIX V5.1A (Rev. 1885):
ksh: syntax error: `<' unexpected
Num SunOS 5.8:
ksh: syntax error: `(' unexpected
Grande abraço, amigão!
--------------------------
Rodolfo D. Gross Villanova
> -----Mensagem original-----
> De: Julio Cezar Neves - DATAPREVRJ
> [mailto:address@hidden]
> Enviada em: terça-feira, 22 de fevereiro de 2005 15:09
> Para: address@hidden
> Assunto: RES: RES: [shell-script] Erro no shell script
>
> Quequeisso gente!
>
> Sob o Bash:
>
> Prompt> while read arq; do ((i++)); echo Arq$i:$arq; done < <(ls)
> Arq1:a
> Arq2:AA
> Arq3:aaas
> Arq4:arch
> Arq5:arq1
> Arq6:arq10
> Arq7:arq2
> Prompt> echo $i
> 7
>
> Faça o mesmo com ls | while ... e ao fim do processo tente achar
> o valor de
> $i. Impossível! Isso pq o pipe criou um subshell que além de onerar a
> máquina, perdeu todo o ambiente criado no seu interior após o seu término.
>
> O nome disso é substituição de procecesso e eu *asseguro* a vcs
> que o bash e
> o ksh (a não ser que estejam capengas) suportam.
>
> Rodolfo, testa isso aí no ksh e conta para a lista, Tchê!
>
> [ ]s,
> Julio
> :wq
>
>
> | -----Mensagem original-----
> | De: Gustavo Chaves [mailto:address@hidden]
> | Enviada em: terça-feira, 22 de fevereiro de 2005 14:50
> | Para: address@hidden
> | Assunto: Re: RES: [shell-script] Erro no shell script
> |
> |
> |
> | >>>>> 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.
> |
> |
> | ---------------------------------------------------------------------
> | Esta lista não admite a abordagem de outras liguagens de
> | programação, como perl, C etc. Quem insistir em não seguir
> | esta regra será moderado sem prévio aviso.
> | ---------------------------------------------------------------------
> | Sair da lista: address@hidden
> | ---------------------------------------------------------------------
> | Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc. Quem insistir em não seguir esta
> regra será moderado sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos