O comando ‘select’

select-1_abertura

O select é um comando interno do Bash e sua função é construir dinamicamente um menu a partir de uma lista de opções. Isto é, ele atribui um valor numérico para cada item, lista na tela, exibe um prompt e fica aguardando a seleção do usuário antes de seguir adiante.

E se você já utilizou o comando tzselect alguma vez na vida, saiba que já esbarrou com ele pela frente… 🙂

Continuar lendo

Anúncios

Coprocessos em Bash – parte 2

coproc-2_abertura

Na primeira parte o coprocesso foi tanto definido com também utilizado para a leitura de forma assíncrona da saída do comando tail mas até o momento foi apenas o monólogo com um programa enviando regularmente linhas de texto a serem impressas na tela. Nesta parte algo mais bidirecional com troca de dados com o coprocesso, uso de uma variável diferente de COPROC e, claro, mais algumas explicações. 🙂

Continuar lendo

Coprocessos em Bash – parte 1

coproc-1_abertura

Quando você executa um programa, pela linha de comando ou a partir de um script, o Bash se encarrega de executá-lo, aguardar a execução terminar, verificar se ela foi bem sucedida¹ e, sendo o caso, direcionar o resultado para a tela, arquivo etc…

No coprocesso² acontece algo diferente; já que o Bash o deixará executando em segundo plano e ao mesmo tempo redirecionará as entrada e saída padrão dele para descritores de arquivo que funcionarão como um canal de comunicação entre eles. É um recurso poderoso e ao mesmo tempo simples de implementar.

E nesta primeira parte, além de uma rápida introdução, a leitura da saída de um programa através de um coprocesso.

(¹) Ou em caso de erro notificar o corrido ou então desviar a execução para algum tratamento de exceções.

(²) Não inventei este nome! Eles são chamados assim mesmo pela documentação do Bash.

Continuar lendo

Substituição de processos no Bash

proc_subst-1_abertura

Um recurso muito útil do Bash, e também de outras shells em sistemas UNIX, é o pipe¹ e com ele é possível direcionar a saída de um programa para a entrada de outro. A substituição de processos — ou process substitution — funciona de modo parecido porém aqui é possível se direcionar a saída de mais de um programa para a entrada de outro como se este fossem arquivos.

(¹) Sim, outros sistemas não UNIX também possuem este recurso mas implementado de modo bem diferente as vezes.

Continuar lendo