Bases numéricas em Bash

base_numerica_bash-1_abertura

Algo que só fui me dar conta pois aconteceu de um script em Bash resultar em um erro ao tentar fazer uma simples operação de adição! O motivo? Um simples zero à esquerda do número e que resultou uma certa perda de tempo mas também na “descoberta” que o o Bash sabe tratar outras bases numéricas além da, óbvia, decimal! 🙂

Continuar lendo

Anúncios

Inserção no início do arquivo com ‘sed’

incluir_sed-1_abertura

Bem. para inserir conteúdo no final de um arquivo já existente basta redirecioná-lo utilizando o “>>”, isto é, utilizar comandos como «echo “mensagem” >> arquivo1» ou então «cat arquivo2 >> arquivo1» para realizar a tarefa. Mas como fazer o oposto? Isto é, inserir conteúdo no início sem necessariamente criar um arquivo intermediário no processo? Uma maneira de fazê-lo é utilizando o sed.

Continuar lendo

Um exemplo prático de coprocesso

sqlite_bash_cursor-1_abertura

Algo totalmente fora do planejado e feito mais como prova de conceito: uma “biblioteca” que permite a scripts escritos em Bash acessarem bases de dados do SQLite utilizando uma conexão persistente implementada através de um coprocesso. É uma abordagem bem diferente da execução do SQLite (via pipe) a cada consulta efetuada e mais próxima do conceito do database cursor utilizado em diversas linguagens de programação.

No ficou acabou ficando tão interessante que resolvi disponibilizá-lo como um projeto no GitHub com direito a uma documentação (bem) básica e até um programa de exemplo! 🙂

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

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