The Universal Argument Parser (with long options)
Publicado por Fabio Lima (última atualização em 11/11/2023)
[ Hits: 3.498 ]
Homepage: https://twitter.com/fabiolimace
Download the-universal-argument-parser-whith-long-options.sh
O script disponibilizado aqui é uma melhoria do "Universal Argument Parser" apresentado em um excelente artigo sobre `getopts` do VOL.
Foram feitas modificações para acrescentar suporte simulado às opções longas, isto é, aquelas neste formato: `--opcao-longa`. Todas as modificações estão devidamente documentadas.
Para simular as opções longas, as strings que começam com dois hifens são substituídas por suas opções curtas correspondentes; por exemplo, uma opção longa hipotética chamada `--help` é substituída por `-h`.
O artigo pode ser acessado por meio deste link: https://www.vivaolinux.com.br/artigo/getopts-criando-scripts-Bash-com-parametros-e-argumentos-person...
Todos os créditos do parser universal são do autor do artigo. As modificações feitas aqui são apenas uma contribuição minha à comunidade.
#!/bin/bash # [MODIFICATION 1] args=$@ # use builtin string substitution to simulate long options args=${args//--long-option-a/-a} # replace `--long-option-a` with `-a` args=${args//--long-option-b/-b} # replace `--long-option-b` with `-b` args=${args//--long-option-c/-c} # replace `--long-option-c` with `-c` # [MODIFICATION 2] # remove unknown long options as # they can cause parsing issues shopt -s extglob args=${args//--+([a-zA-Z0-9-])/} ## arrays declare -A options; # [MODIFICATION 3] # define the parameters # using the silent mode # set by the leading `:` OPTSTRING=":a:b:c:d:e:f:" # [MODIFICATION 4] # use the modified `$args` instead of `$@` while getopts "$OPTSTRING" name $args; do # if argument parameter was given if [[ ${OPTARG} ]]; then options[${name}]=${OPTARG}; # if argument is just a flag else options[${name}]=${name}; fi done; ## shift the $@ shift $(( ${OPTIND} - 1 )); # [MODIFICATION 5] # print arguments printf ' $@: %s\n' "$args" printf ' -a: %s\n' ${options['a']}; printf ' -b: %s\n' ${options['b']}; printf ' -c: %s\n' ${options['c']};
isconnect.sh - verifica a conexão com a internet
DELETAR arquivos a X semanas passadas
Renomear legendas srt de filmes e séries
Pegando IP externo shell script
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Separar trafego da VPN da VPS (0)
Formatando cartão de memoria que nao formata[AJUDA] (17)
warsaw parou de funcionar após atualização do sistema (solução) (0)
Desde que seja DDR3, posso colocar qualquer memória? [RESOLVIDO] (6)