Menu em formato texto simples em BASH script feito com comando select

Hoje será feita uma explanação sobre como montar menus em BASH script usando o comando select. O comando "select" permite a criação de um menu bem rudimentar em modo texto, sem o recurso de caixas de texto, como as do aplicativo de terminal dialog, que aparecem em certos momentos na instalação e configuração de distros como Slackware e Debian. Em certos momentos já vi aparecer no processo de configuração do Debian, em linha de comando, um prompt de escolha de opção, muito semelhante ao que aparecerá logo abaixo, quando "select" é usado. Ele cria um sistema de verificação de variável, através de opções numéricas em loop com prompt, que dispensa o uso de comandos como read, while e for. Vem tudo num pacote só. A única coisa requerida dentro da estrutura "select ... do ... done" é uma outra estrutura, a de decisão, que pode ser feita pelos comandos "if ... then ... elif ... else ... fi", "case ... esac" ou até por concatenação usando o comando test e os operadores de concatenação de execução de comandos && e ||. Ao se executar este código, aparece o seguinte texto na tela: === MENU EM BASH === 1) inclusao 2) alteracao 3) exclusao 4) consulta 5) sair #? Na primeira linha há um anúncio do que se trata: um menu em BASH. Obviamente. A partir daí há a exibição das opções do menu, com itens enumerados de 1 a 5, representando um hipotético cadastro. Para ser um programa de verdade, falta a elaboração do código de gerenciamento de cadastro de dados, como o de uma agenda, por exemplo. É um sistema exemplificado que pode ser implementado no futuro, sendo feito apenas o menu por agora. A última linha representada pelos caracteres #? representa o prompt, que espera pelo número da opção. No caso um dos números de 1 a 5. Ao digitar os números de 1 a 5, a variável declarada no "select" ganha a atribuição do texto ao lado do número no menu. Este texto vai para a estrutura "case ... esac" que analisa o que fazer. Para as opções de 1 a 5 é verificado se o valor da variável i corresponde a uma das opções: inclusao, alteracao, exclusao, consulta, sair e o coringa * (otherwise ou default em outras linguagens) para qualquer outro caso. Conforme a alternativa corresponda, é emitido apenas um texto de aviso sobre a opção selecionada. Exceto pela opção 5, que emite a mensagem e sai do programa. Esta saída é feita pelo comando break, que força a retirada da estrutura "select", como é feito quando se usa for e while (lá em cima está escrito que select dispensa loop com for e while, lembram?) No caso de a opção digitada ser diferente de uma das opções de 1 a 5 é emitida a mensagem de erro, solicitando nova tentativa. Conforme explicado. usando a opção 5 a mensagem de saída é exibida e o comando break força a saída do "select". Como só há o comando exit 0, o programa é encerrado retornando o valor 0 para o sistema operacional.

Por: Perfil removido


beepop - popups com o texto digitado

Script inicialmente feito pelo z3bra, com algumas modificações minhas. Ele deve ser executado preferencialmente com .xinitrc, no seu servidor Xorg. Ele fica em background lendo texto que é enviado ao seu FIFO, se criar um symlink para o beepop com o nome de popup, você pode usar assim: $ popup teste 1 2 3 Se não quiser pode só dar echo no FIFO. $ echo teste 1 2 3 > "$XDG_RUNTIME_DIR"/beepop.fifo Note que XDG_RUNTIME_DIR/beepop.fifo é o caminho padrão, edite o script para mudar.

Por: Perfil removido


Raízes da equação de segundo grau (Bhaskara) através do prompt em shell

Da série "scripts inúteis" ou "inutilitários". Este script recebe três números inteiros ou decimais via linha de comando, correspondentes a "a", "b" e "c", na equação de segundo grau ax²+bx+c=0 e retorna os dois valores para os quais x valida a equação, transformando a expressão em zero. Ele também fornece as raízes complexas conjugadas. Os valores são impressos na tela por uma linha cada totalizando duas linhas impressas. O script foi testado até onde pude contra possíveis bugs. Nada impede de haver algum. Exemplo de funcionamento $ ./bhaskara-0001.sh 1 2 1 -1.000000000000000 -1.000000000000000 Outro exemplo: $ ./bhaskara-0001.sh 1 2 3 -1.000000000000000 - 1.414213562373095i -1.000000000000000 + 1.414213562373095i Vejam a letra "i" ao final de cada linha, indicando a raiz complexa. Se tiver coragem, ainda pretendo fazê-lo funcionar para parâmetros complexos.

Por: Perfil removido


copy - copiar para a área de transferência

Copia para a área de trabalho (clipboard) os parâmetros enviados ao script ou os lê via STDIN. Exemplos: ./copy string ./copy <ENTER> this is a string <^d> ./copy < string ./copy < filepath

Por: Perfil removido


de - deep editor

Usa find para achar todos os arquivos com um certo nome seguindo a árvore de diretórios no seu diretório atual ou um diretório definido como segundo argumento e abre no editor. Exemplos ------------------ Abrir todos os arquivos com o nome 'de' a partir do diretório atual: $ de de Abrir todos os arquivos com nome 'Makefile' a partir do diretório ~/src: $ de Makefile ~/src Abrir todos os arquivos que terminam com 'bin' a partir do diretório atual: $ de \*bin NOTA: na penúltima linha remover o 'e' depois do 'xargs' e trocar pelo comando pra invocar o editor de texto que deseja. Exemplo: xargs nano xargs emacs

Por: Perfil removido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts