|
From: | address@hidden |
Subject: | Re: [shell-script-pt] $((i)) ou $((i++)) no Dicas-L de 15/ago/2019 (Substituição de Processos) |
Date: | Sun, 14 Jun 2020 12:36:00 -0300 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 |
Correto!
Eu havia me atentado apenas à incrementação. kkkk
Não tinha me preocupado com o início (em zero) ou a linha
final (valor perdido pois está num subshell).
Didática zero a minha! kkkkk
Obrigado Júlio!
Renato
------------------------------------------------------------------------------------------------
Caro Renato,vou te responder no corpo da sua msg, para não deixar de abordar nenhum ponto, mas antes de mais nada, te agradeço de coração o elogio que fizeste
Olá Júlio !
No Dicas-L de 15/ago/2019 (Substituição de Processos - http://www.dicas-l.com.br/arquivo/substituicao_de_processos.php) vi um exemplo que não entendi:
ls arq* | while read Arq
do
echo $((i)) $Arq
done; echo Eu tenho :$i: arquivos
Com a saída esperada (supondo que os arquivos existam no diretório):
1 arq
2 arq.err
3 arq.err1
4 arq.limpo
Eu tenho :: arquivos
Mas quando tento da forma acima a variável i não é incrementada.
Não estaria faltando o '++' no ((i)) ?
Sem dúvida alguma está faltando. Como tudo que escrevo, testo antes, posso garantir que foi um erro de transcrição para o html do site.
ls arq* | while read Arq
do
echo $((i++)) $Arq #<-------
done; echo Eu tenho :$i: arquivos
(assim funciona)
Não funciona não!!!!!!!!Ainda tem duas coisas erradas aí:1.Se vc fizer $((i++)), com os mesmos arquivos do exemplo sua saída seria:0 arq1 arq.err2 arq.err13 arq.limpoOu seja, a origem seria zero e não 1 pq vc usou uma pós incrementação e o correto seria uma pré incrementação com um echo $((++1))2.A última linha deveria ser:Eu tenho :4: arquivosE continua sendo:Eu tenho :: arquivosIsso ocorrerá por causa do pipe após o ls, que gerará um subshell para executar o while. Todo o valor de $i que foi alterado dentro desse subshell será perdido ao seu término e é aí que entra a substituição de processos para que isso não ocorra. Para tudo funcionar 100%, o script deveria ser:while read Arqdoecho $((++i)) $Arqdone < <(ls arq*); echo Eu tenho :$i: arquivos
Durante esta semana que começa amanhã, as matrículas para o meu curso de programação em Shell estarão abertas. A ementa é 100% abrangente e pode ser vista em https://www.dicas-l.com.br/download/EmentaShell.pdf e em https://www.dicas-l.com.br/download/EmentaERs.pdf já que que faz o curso de programação em Shell, ganha um curso de Expressões Regulares.
- Vc pode ver todos os detalhes do curso em https://educacao.dicas-l.com.br/shell-linux, mas assim mesmo vou mostrar uns diferenciais:
- Se o solicitar até a metade do curso, seu investimento será inteiramente restituído sem nenhuma pergunta;
- O material (dezenas de vídeos, o material de estudo, que é um livro de 350 páginas no formato A4 e convertido para HTML) passará a ser seu material de consulta, pois tudo ficará acessível por tempo indeterminado;
- Se vc tiver um problema que te impeça de fazer o curso direito, faça quantas vezes quiser gratuitamente. A nossa filosofia é que vc pagou para aprender Shell, então faça o curso (que tem muito conteúdo) até achar que aprendeu;
- Devido a essa maldita pandemia estamos dando 20% de abatimento aos 20 primeiros inscritos. Abriremos as matrículas no dia 15/06 (amanhã) e fecharemos no dia 19/05 ou qdo tivermos 40 inscritos, o que ocorrer primeiro;
- Dependendo do aproveitamento durante o curso de Shell damos aos nossos melhores alunos bolsas de estudos em treinamentos complementares, como YAD, Zenity, Dialog, Linux dicas e truques, ...
Se vc quer aprender tudo de Shell rapidamente e sem risco do seu investimento inscreva-se, mas seja rápido para ganhar o desconto,
Abraços,
Não conhecia nem essa construção (com dois parênteses e o ++, que exibe e incrementa ao mesmo tempo - muito prática!).
De qualquer maneira já aprendi algo novo e deve ser útil a muitos! :-)
Abraços de um fã. ;-)
Renato Romano, São B. Campo
Julio
» Não tem tempo para fazer um curso presencial?» Na sua cidade não tem nenhum bom curso de Linux?» Em 15/06/2020 abriremos uma semana de inscrições» para uma nova turma. Veja mais detalhes em:
Também damos treinamento em sua empresa
em qualquer cidade, com certificado e nota fiscal.
_______________________________________________ Lista brasileira de usuários de shell script Endereço de e-mail da lista: shell-script-pt@nongnu.org Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/ NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.
[Prev in Thread] | Current Thread | [Next in Thread] |