Pular para o conteúdo

The Universal Argument Parser (with long options)

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.
Fabio Lima fabiolimace
Hits: 3.995 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download the-universal-argument-parser-whith-long-options.sh Enviar nova versão

Esconder código-fonte

#!/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']};

Detectar sistemas operacionais dos dispositivos na rede via TTL

Script para adicionar chave pública

Script para Conexão Automática com Internet a Rádio

MySQL brute-force

envia emails

Contribuir com comentário

Entre na sua conta para comentar.