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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Redirecionamentos múltiplos


From: Julio C. Neves
Subject: Re: [shell-script-pt] Redirecionamentos múltiplos
Date: Fri, 5 Jun 2020 09:45:01 -0300

Fala Jamenson,
acho que vc não entendeu o que falei, já que eu nunca disse que não se deve usar pipes. O que sempre digo é que não se deve utilizar pipes desnecessários.

Sou fã ardoroso do pipe e acho que ele é um dos grandes responsáveis pela programação em Shell ser tão enxuta.

Se here strings (<<<) foi criado para que usemos construções do tipo:

CMD <<< CADEIA

no lugar de echo CADEIA | CMD

Pq devemos continuar usando a forma arcaica e ineficiente?

Mas, no meu entender, o problema nem é o fato de ser ligeiramente mais lento, é o fato dele (assim com substituição de cmds, subst. de processos, uso de parênteses, ...) rodar em um subshell e todo o ambiente criado dentro desse subshell morre ao seu fim. Para simular, vou usar parênteses para criar um subshell:

$ var=1; (
> echo No início, já no subshell, var tem $var
> echo Somei 1 e var passou a ter $((++var))
> ); echo Saindo do subshell var voltou a ter $var
No início, já no subshell, var tem 1
Somei 1 e var passou a ter 2
Saindo do subshell var voltou a ter 1

Como vc pode ver, o valor adquirido dentro dos parênteses foi para o brejo... Veja esse:

$ pwd; (cd /; pwd); pwd
/home/julio/tstsh
/
/home/julio/tstsh

Voltando ao pipe, se vc quiser ler um arquivo e for contando a qtd de linhas para listar no final, vc não pode fazer algo do tipo:

cat /etc/passwd | while IFS=: read Lname Lixo; do
    echo -e $((++ContaLinha)) $Lname
done; echo Meu etc/passwd tem $ContaLinha linhas

Pq ContaLinha estará vazio... É só copiar e colar para testar.

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Em 27/01/2020 abriremos uma semana de inscrições
» para uma nova turma. Veja mais detalhes em:

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.







Em qui., 4 de jun. de 2020 às 18:17, Jamenson Ferreira Espindula de Almeida Melo <jafesp@gmail.com> escreveu:
Saudações.

Salvo engano, é muito comum a seguinte construção:

comando_um | comando_dois | ... | comando_n

Porém, conforme defende o mais conceituado "shelleiro" brasileiro, o
mestre Júlio Neves, deve-se evitar tal construção. O argumento
principal sustentado por Júlio é que tal construção cria sub processos
(sub shells), o que pode ocasionar perda de informações, especialmente
nas variáveis de ambiente.

Para o mestre Júlio, a construção mais correta é:

comando_um <<< $( comando_dois )

Dadas tais premissas, pergunto:

Qual seria a construção para múltiplos redirecionamentos?

Pergunto, pois não encontrei (ainda) uma construção para mais que dois
(02) comandos.

Cordialmente,

Jamenson Ferreira Espindula de Almeida Melo
Jaboatão dos Guararapes, Pernambuco, Brasil
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave PGP:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

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

reply via email to

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