[SHELL SCRIPT] case parametro e função imprimir na tela resultado [RESOLVIDO]

1. [SHELL SCRIPT] case parametro e função imprimir na tela resultado [RESOLVIDO]

Alex Machado Fontinelli
Pinguino

(usa Debian)

Enviado em 30/09/2021 - 11:57h

Como faço para imprimir na tela o parâmetro passado quando ele está dentro de uma função???
estou usando o codigo abaixo e as variáveis $1 e $2 ficam nulas

#!/bin/bash

function1(){
echo "parameter-[1] $1"
}

function2(){
echo "parameter-[1] $1"
echo "parameter-[2] $2"
}

case $1$2 in
f1) function1 ;;
f2) function2 ;;
*) echo "Nothing to do"
exit ;;
esac


estou tentando fazer o seguinte output
./script.sh f1

parameter-[1] f1


./script.sh f2

parameter-[1] f1
parameter-[2] f2




  


2. Re: [SHELL SCRIPT] case parametro e função imprimir na tela resultado [RESOLVIDO]

Bruh
Bruuh

(usa Arch Linux)

Enviado em 30/09/2021 - 12:55h

Pinguino escreveu:

Como faço para imprimir na tela o parâmetro passado quando ele está dentro de uma função???
estou usando o codigo abaixo e as variáveis $1 e $2 ficam nulas

#!/bin/bash

function1(){
echo "parameter-[1] $1"
}

function2(){
echo "parameter-[1] $1"
echo "parameter-[2] $2"
}

case $1$2 in
f1) function1 ;;
f2) function2 ;;
*) echo "Nothing to do"
exit ;;
esac


estou tentando fazer o seguinte output
./script.sh f1

parameter-[1] f1


./script.sh f2

parameter-[1] f1
parameter-[2] f2


Não mexo com shell script, tenho apenas um pequeno conhecimento em java.
Mas, criei um scritp com esse conteúdo no meu pc, dei permissão de executar com o comando:
chmod +x /caminho/para/o/script  

Em seguida apenas chamei ele e passei os parâmetros "~/script f1" ou "script f2" E retornou as saídas que você definiu perfeitamente

"A emoção mais antiga e mais forte da humanidade é o medo, e o mais antigo e mais forte de todos os medos é o medo do desconhecido."



3. Re: [SHELL SCRIPT] case parametro e função imprimir na tela resultado

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 30/09/2021 - 20:44h

É só chamar a função com o parâmetro!
#!/bin/bash

_nn(){
awk 'BEGIN{RS=" "} {printf "Parâmetro[%02d]: %s\n" ,NR,$0}' <<< "$@"
}

(($# > 0)) && _nn $@ || printf "\x1bc\nSem Parâmetros\n"

./script.sh AAA
Parâmetro[01]: AAA

./script.sh Letra_{A..F}
Parâmetro[01]: Letra_A
Parâmetro[02]: Letra_B
Parâmetro[03]: Letra_C
Parâmetro[04]: Letra_D
Parâmetro[05]: Letra_E
Parâmetro[06]: Letra_F

./script.sh Num_{0..9}
Parâmetro[01]: Num_0
Parâmetro[02]: Num_1
Parâmetro[03]: Num_2
Parâmetro[04]: Num_3
Parâmetro[05]: Num_4
Parâmetro[06]: Num_5
Parâmetro[07]: Num_6
Parâmetro[08]: Num_7
Parâmetro[09]: Num_8
Parâmetro[10]: Num_9


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



4. Re: [SHELL SCRIPT] case parametro e função imprimir na tela resultado

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/09/2021 - 21:11h

Veja se serve:
#!/usr/bin/env bash

declare -A fns=([fn1]=function1 [fn2]=function2)

function1() {
echo "parameter-[1] $1"
}

function2() {
echo "parameter-[2] $1"
}

[ $# -gt 0 ] && ${fns[$1]} $2


$ ./script.sh fn1 blablabla
parameter-[1] blabla
$ ./script.sh fn2 lalalala
parameter-[2] lalalala



5. Achei uma solução

Alex Machado Fontinelli
Pinguino

(usa Debian)

Enviado em 02/10/2021 - 19:42h

Descobri como passar quantos parâmetros eu quiser, tem que declarar nas variáveis globais

# Global Variables
PARAMETER_1=$1
PARAMETER_2=$2
PARAMETER_3=$3

function1(){
echo "parameter-[1] $PARAMETER_1"
}

function2(){
echo "parameter-[1] $PARAMETER_1"
echo "parameter-[2] $PARAMETER_2"
echo "parameter-[3] $PARAMETER_3"
}

case $1 in
f1) function1 ;;
f2) function2 ;;
*) echo "Nothing to do"
exit ;;
esac


agora funciona caso a pessoa execute
./script.sh f2 f3 f4
etc..

Obrigado a todos!!!


6. Re: [SHELL SCRIPT] case parametro e função imprimir na tela resultado [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 03/10/2021 - 00:29h


Pinguino escreveu:

Descobri como passar quantos parâmetros eu quiser, tem que declarar nas variáveis globais

# Global Variables
PARAMETER_1=$1
PARAMETER_2=$2
PARAMETER_3=$3

function1(){
echo "parameter-[1] $PARAMETER_1"
}

function2(){
echo "parameter-[1] $PARAMETER_1"
echo "parameter-[2] $PARAMETER_2"
echo "parameter-[3] $PARAMETER_3"
}

case $1 in
f1) function1 ;;
f2) function2 ;;
*) echo "Nothing to do"
exit ;;
esac


agora funciona caso a pessoa execute
./script.sh f2 f3 f4
etc..

Obrigado a todos!!!

Pinguino, não é necessário declarar as variáveis globais....
É só chamar a função com o(s) parâmetro(s),
conforme os exemplos postados.....


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________




7. Usando o case não funciona

Alex Machado Fontinelli
Pinguino

(usa Debian)

Enviado em 03/10/2021 - 19:28h


Pelo que eu entendi se não colocar as variáveis globais usando o case não será mostrado o parâmetro na tela






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts