Enviado em 25/04/2023 - 23:18h
$ bash args_bash.sh -help args_bash.sh: opção inválida -- “e” args_bash.sh: opção inválida -- “l” $ bash args_bash.sh -uwiki -pprojeto1 -c"projeto teste" args_bash.sh: opção inválida -- “w” args_bash.sh: opção inválida -- “i” args_bash.sh: opção inválida -- “k” args_bash.sh: opção inválida -- “i” args_bash.sh: opção inválida -- “r” args_bash.sh: opção inválida -- “o” args_bash.sh: opção inválida -- “j” args_bash.sh: opção inválida -- “e” args_bash.sh: opção inválida -- “t” args_bash.sh: opção inválida -- “o” args_bash.sh: opção inválida -- “1”
#!/bin/bash args=$(getopt -o upc:,h -l user,proj,commit:,help -n "${0}" -- "$@") || exit eval set -- "$args" function help() { echo -e "\e[1;31mUsage\033[1;32m: \033[1;31m${0##*/} \033[1;34m[ -u \"your_user_git\" | --user ]\n\n[ -p \"project_name\" | --proj ]\n\n[ -c \"comemt alter project\" | --commit ]\n\n[ -h | --help]\n\n" } while [[ $1 != "--" ]]; do case "${1}" in -h | --help) help shift 1 ;; -u | --user) user="$2" shift 2 ;; -p | --proj) projeto="$3" shift 3 ;; -c | --commit) comentario="$4" shift 4 ;; # shouldn't happen unless we're missing a case *) echo "unexpected option: ${1}" >&2 exit 1 ;; esac done shift # skip '--' echo "$user $projeto $comentario" echo "remaining non-option arguments: $@"
Enviado em 26/04/2023 - 00:04h
Boa noite Dark.#!/usr/bin/env bash sep=$(printf "%28s"|sed -r 's/ /-/g;s/.{5}/& /;s/ -{10}/& /;s/ -{5}/& /2'); cb='\e[1;34m';cy='\e[1;33m';cr='\e[1;38m';fc='\e[m'; COLS=$(tput cols); lin='─────────────────────────'; usage(){ printf "\x1bc${cy}${sep} Uso: $0 -[cmph]lN\n${sep}${fc} m - ordena por memória. c - ordena por cpu. p - ordena por processo l - Nº de linhas (opcional). v - versão. h - este. ${cy}${sep}${fc}\n"; exit 0; } versao(){ v="V1.00:Abril:2023"; printf "\x1bc${cb}\e[2;$(((COLS-25)/2))f${lin}\e[3;$(((COLS-27)/2))f| Versão:${v} |\e[4;$(((COLS-27)/2))f| https://goo.gl/dYY7i9 |\e[5;$(((COLS-25)/2))f${lin}$fc\n\n"; exit 0; } msgerro(){ printf "\nERRO! $1 : [$2]\nUso: $0 -[cmpvh]lN\n" exit 0; } function GetOpts(){ while getopts ':cmpvhl:' OPCAO; do case $OPCAO in c) echo "Opcão:$OPCAO";; m) echo "Opcão:$OPCAO";; p) echo "Opcão:$OPCAO";; l) echo "Opcão:$OPCAO OPTARG:$OPTARG";; v) echo "Opcão:$OPCAO";versao;; h) echo "Opcão:$OPCAO";usage ;; :) printf "${cr}OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO."${cf}"\n" >&2;sleep 2;usage ;; ?) printf "${cr}OPÇãO INVáLIDA: \"-${OPTARG}\""${cf}"\n" >&2;sleep 2;usage ;; esac done executar $@ } function executar(){ echo "\nExecuta o Script: $0 $@\n" } [ "$#" -eq 0 ] && msgerro "[1]" "Requer argumento." [[ ! "$@" =~ (^[-][mcpvh]) ]] && msgerro "[2]" "Falta ─" GetOpts $@
Enviado em 26/04/2023 - 06:53h
Para criar um script com argumentos e parâmetros em uma linguagem de programação, é necessário definir as variáveis de entrada, capturar os argumentos passados pela linha de comando e utilizar esses valores como parâmetros em sua lógica de programação.Enviado em 26/04/2023 - 13:20h
#!/usr/bin/env bash sep=$(printf "%28s"|sed -r 's/ /-/g;s/.{5}/& /;s/ -{10}/& /;s/ -{5}/& /2'); cb='\e[1;34m';cy='\e[1;33m';cr='\e[1;38m';fc='\e[m'; COLS=$(tput cols); lin='─────────────────────────'; usage(){ printf "\x1bc${cy}${sep} Uso: $0 -[cmph]lN\n${sep}${fc} m - ordena por memória. c - ordena por cpu. p - ordena por processo l - Nº de linhas (opcional). v - versão. h - este. ${cy}${sep}${fc}\n"; exit 0; } versao(){ v="V1.00:Abril:2023"; printf "\x1bc${cb}\e[2;$(((COLS-25)/2))f${lin}\e[3;$(((COLS-27)/2))f| Versão:${v} |\e[4;$(((COLS-27)/2))f| https://goo.gl/dYY7i9 |\e[5;$(((COLS-25)/2))f${lin}$fc\n\n"; exit 0; } msgerro(){ printf "\nERRO! $1 : [$2]\nUso: $0 -[cmpvh]lN\n" exit 0; } function GetOpts(){ while getopts ':cmpvhl:' OPCAO; do case $OPCAO in c) echo "Opcão:$OPCAO";; m) echo "Opcão:$OPCAO";; p) echo "Opcão:$OPCAO";; l) echo "Opcão:$OPCAO OPTARG:$OPTARG";; v) echo "Opcão:$OPCAO";versao;; h) echo "Opcão:$OPCAO";usage ;; :) printf "${cr}OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO."${cf}"\n" >&2;sleep 2;usage ;; ?) printf "${cr}OPÇãO INVáLIDA: \"-${OPTARG}\""${cf}"\n" >&2;sleep 2;usage ;; esac done executar $@ } function executar(){ echo "\nExecuta o Script: $0 $@\n" } [ "$#" -eq 0 ] && msgerro "[1]" "Requer argumento." [[ ! "$@" =~ (^[-][mcpvh]) ]] && msgerro "[2]" "Falta ─" GetOpts $@
Enviado em 26/04/2023 - 19:30h
args=$(getopt -o upc:,h -l user,proj,commit:,help -n "${0}" -- "$@") || exitEnviado em 26/04/2023 - 22:11h
Enviado em 26/04/2023 - 22:12h
Olá, wiki.anon! Entendi que você deseja criar um script que aceite opções curtas e longas. Para fazer isso, recomendo o uso do [b]getopt[\/b] em seu script, como você já mencionou na citação de msoliver.Enviado em 27/04/2023 - 15:07h
Enviado em 27/04/2023 - 15:08h
Olá, wiki.anon! Desculpe pelo inconveniente causado pelo meu exemplo anterior. Vamos ajustar o loop para resolver o problema do loop infinito. Substitua o `while true` e seu conteúdo pelo seguinte:while [ $# -gt 0 ]; do case "$1" in -u|--user) USER=1 shift ;; -p|--proj) PROJ=1 shift ;; -c|--commit) COMMIT="$2" shift 2 ;; -h|--help) echo "Ajuda:" echo "-u | --user: Opção para usuário" echo "-p | --proj: Opção para projeto" echo "-c | --commit: Opção para commit com" exit 0 ;; --) shift break ;; *) echo "Opção inválida: $1" exit 1 ;; esac done
Enviado em 28/04/2023 - 15:42h
while [ $# -gt 0 ]; do case "$1" in -u|--user) USER=1 shift ;; -p|--proj) PROJ=1 shift ;; -c|--commit) COMMIT="$2" shift 2 ;; -h|--help) echo "Ajuda:" echo "-u | --user: Opção para usuário" echo "-p | --proj: Opção para projeto" echo "-c | --commit: Opção para commit com" exit 0 ;; --) shift break ;; *) echo "Opção inválida: $1" exit 1 ;; esac done
#!/bin/bash # Processa os argumentos usando getopt TEMP=$(getopt -o upc:h --long user,proj,commit:,help -- "$@") # Atribui os argumentos às variáveis eval set -- "$TEMP" while [ $# -gt 0 ]; do case "$1" in -u | --user) USER_GIT="${OPTARG}" shift ;; -p | --proj) PROJECT_NAME="${OPTARG}" shift ;; -c | --commit) COMMIT="${OPTARG}" shift ;; -h | --help) echo "Ajuda:" echo "-u | --user: Opção para usuário" echo "-p | --proj: Opção para projeto" echo "-c | --commit: Opção para commit com" ;; --) shift break ;; *) echo "Opção inválida: $1" exit 1 ;; esac done echo "${USER_GIT} ${PROJECT_NAME} ${COMMIT}"
Enviado em 28/04/2023 - 15:42h
Olá, wiki.anon! Percebi que você está utilizando a variável "OPTARG" para obter os valores dos argumentos. No entanto, é necessário utilizar "$2" para acessar o valor do argumento atual no loop. Além disso, o loop deve ser ajustado para processar corretamente os casos em que não há argumentos a serem processados. Aqui está o código ajustado:Enviado em 28/04/2023 - 20:30h
#!/bin/bash # Processa os argumentos usando getopt TEMP=$(getopt -o u:p:c:h --long user:,proj:,commit:,help -- "$@") # Atribui os argumentos às variáveis eval set -- "$TEMP" while [ $# -gt 0 ]; do case "$1" in -u|--user) USER_GIT="$2" shift 2 ;; -p|--proj) PROJECT_NAME="$2" shift 2 ;; -c|--commit) COMMIT="$2" shift 2 ;; -h|--help) echo "Ajuda:" echo "-u|--user: Opção para usuário" echo "-p|--proj: Opção para projeto" echo "-c|--commit: Opção para commit com" exit 0 ;; --) shift break ;; *) echo "Opção inválida";;
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Graduação e certificação Eng. de redes e Eng. Linux[DUVIDA] (0)
Controle do PS5 no Linux Mint funciona? (3)
Autenticação necessária. um aplicativo quer acesso ao chaveiro "c... (1)