shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Função em shell script


From: Julio C. Neves
Subject: Re: [shell-script] Função em shell script
Date: Wed, 15 Aug 2018 11:38:07 -0300

Fala PacMan,
Sumido... Por onde vc anda?

Vê se vc concorda com o que vou escrever:
O tratamento dados as funções é o mesmo que para um script convencional, com duas exceções:
  1. Para sair de uma função usa-se return e não exit que encerraria o prg;
  2. Vc pode definir variáveis locais em funções, justamente para evitar conflitos de variáveis dentro e fora da função.
Pois é os parâmetros posicionais das funções são implicitamente criados como local e é por isso que não interferem em nada com os parms recebidos pelo prg. Vou declarar uma função:

$ function soma
> {
> echo $(($1+$2))
> }

E vou passar os parâmetro 2 e 4 para o Bash (já que estou no prompt:

$ set 2 4

Chamando a função e passando os parâmetros recebidos pelo Bash, tudo funciona às mil maravilhas. 

$ soma $1 $2
6

Até que o Gilmar Mendes revogue a matemática, a função recebeu e tratou $1 e $2 sem confundir as coisas.

Ô Bruno, quebra o galho e explica o teu problema direito, pq acho que ninguém entendeu ainda.

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça nosso portal educacional e estude conosco: 
»  Treinamento presencial (em 4 sábados) no RJ e BSB 
    em http://bit.ly/cursoshelljulioneves                   



Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.



Em qua, 15 de ago de 2018 às 04:57, Tiago Peczenyj address@hidden [shell-script] <address@hidden> escreveu:
 

Eu acho q entendi o problema 

(Estou respondendo do celular, de ferias, desculpem se ja foi respondido)

Variáveis especiais $1 $2 etc dependem do contexto 

Em um script se referem aos argumentos de execução do mesmo

#!/bin/sh
echo “fui executado com argumentos: 1=$1 e 2=$2”

Mas dentro de funções eles se referem ao argumentos que vc passou para as mesmas

function foo(){
  echo “fui chamado com argumentos... $1,$2”
}

Mas a função não ve os argumentos do script

Vc pode fazer

#!/bin/sh

function foo(){ ... }

foo $2

Que deve funcionar 

Em qua, 15/08/2018 às 09:33, address@hidden [shell-script] <address@hidden> escreveu:
 

Segue o script funcionando. Aqui eu pego o valor de $2 e atribuo a VAR, o que resolve:

#!/bin/bash

# Verifica a versão do SOA

var=$2;

function soa {

if [[ $var == "f" ]]; then

dig @f1.f.dns.br com.br SOA +short | cut -d " " -f 3

else

echo "Erro!"

fi

}

        case $1 in

                -h)

                soa

                ;;

esac


Segue como eu queria que fosse usando o próprio $2, coloquei entre aspas como Alfred mencionou mas não deu certo. :

#!/bin/bash

# Verifica a versão do SOA

function soa {

if [[ "$2" == "f" ]]; then

dig @f1.f.dns.br com.br SOA +short | cut -d " " -f 3

else

echo "Erro!"

echo "cifrão1=$1, cifrão2=$2"

fi

}

        case $1 in

                -h)

                soa

                ;;

esac


---Em address@hidden, <atcasanova@...> escreveu:

Passe os parâmetros delimitados por aspas

On Tue, Aug 14, 2018 at 1:20 PM Maik Alberto maik.alberto@... [shell-script] <shell-script@...> wrote:
 

Talvez enviar o codigo fique mais fácil para o pessoal ajudar.

funcao(){
echo $1
echo $2
}
funcao a b




De: shell-script@... <shell-script@...> em nome de brunodiasinfo@... [shell-script] <shell-script@...>
Enviado: terça-feira, 14 de agosto de 2018 13:10
Para: shell-script@...
Assunto: [shell-script] Função em shell script
 

 

Olá a todos,

Eu tenho um script que consulta o SOA de algumas lâminas DNS, e uma das minhas funções é fazer essa pesquisa, para fazer a pesquisa eu uso parâmetros, sendo $1 a opção de consulta e $2 a lâmina DNS.

A função em si não reconhece o valor de $2, mas reconhece o valor de $1, uma alternativa foi passar o valor de $2 para uma variável, mas eu quero passar $2 e não uma variável, será que poderiam me ajudar. Desde já obrigado.

 

--
Tiago B. Peczenyj

http://about.me/peczenyj


reply via email to

[Prev in Thread] Current Thread [Next in Thread]