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

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

RES: [shell-script] como mudar o valor de um parametro?


From: Emerson Domingues Souto - H2M
Subject: RES: [shell-script] como mudar o valor de um parametro?
Date: Mon, 6 Aug 2012 18:43:11 -0300

Alterar valor de uma variável global é muito simples, basta usar o comando 
abaixo em qualquer ponto do shell, seja na função chamadora ou na função 
chamada:
var_global=xpto

De resto, concordo plenamente, é melhor receber o retorno em uma variável como 
no seu exemplo. Taí uma boa dica para o Isac.

Grato,

Emerson Domingues Souto
Tecnologia da Informação
Marítima Seguros S/A

> -----Mensagem original-----
> De: address@hidden [mailto:shell-
> address@hidden] Em nome de Alysson Gonçalves de Azevedo
> Enviada em: segunda-feira, 6 de agosto de 2012 18:13
> Para: address@hidden
> Assunto: Re: [shell-script] como mudar o valor de um parametro?
> 
> Não imagino como fazer para uma função alterar o valor de uma variável
> "global".
> Mas em todo caso eu acho uma má ideia. Melhor do que alterar $1, é definir
> uma variável para receber o retorno da funcao renomeia passando $1 como
> parametro.
> 
> variavel=$(renomeia_arquivo "$1")
> 
> 
> Alysson Gonçalves de Azevedo - (11) 8491-7730
> 
> "É curioso como as pessoas ficam confusas quando a frase não terminam do
> jeito que elas periquito."
> 
> 
> 
> Em 6 de agosto de 2012 16:35, Emerson Domingues Souto - H2M <
> address@hidden> escreveu:
> 
> > **
> >
> >
> > Ah tah ....
> >
> > Eu nem sabia que dava pra alterar o valor $1 .... Mas blz, se qualquer
> > forma vc está alterando o $1 localmente na função
> > renomeiaArquivoComEspaco(), que não necessariamente é o mesmo $1 da
> > função chamadora. Pois se fosse o mesmo vc nem precisaria chamar a
> > função renomeiaArquivoComEspaco enviando $1 ... concorda ? mesma
> coisa
> > seria se vc criasse uma variável de nome xucrutz nas 2 funções, apesar
> > de mesmo nome, cada variável vai ter o seu valor local em cada uma das
> > funções separadamente.
> >
> > No caso a variável $1 precisaria ser global e isso eu acho que não é
> > possível.
> >
> > Mas e se vc criar nas suas funções uma variável global chamada
> > $parametro1 ? aí sim vc poderia fazer do jeito q vc quer, o q vc acha ?
> >
> >
> > Emerson Domingues Souto
> >
> > Tecnologia da Informação
> >
> > Marítima Seguros S/A
> >
> > De: address@hidden [mailto:
> > address@hidden] Em nome de Isac Luz  Enviada em:
> > segunda-feira, 6 de agosto de 2012 16:26
> >
> > Para: address@hidden
> > Assunto: Re: [shell-script] como mudar o valor de um parametro?
> >
> > Opa,
> >
> > Issae que eu preciso, mudar o valor de $1 globalmente.
> >
> > Dentro da função, na linha:
> > set - "${dir}/${arq// /}"
> > essa linha seta o novo valor para $1, mas ele soh funca dentro da
> > função e preciso que funcione fora tb
> >
> > Em 06/08/12, Emerson Domingues Souto -
> > H2M<address@hidden
> > <mailto:emersons.h2m%40maritima.com.br>
> > > escreveu:
> >
> > > Deixa eu ver se entendi:
> > >
> > >
> > >
> > > Vc quer que o conteúdo de ${1} do 1º echo seja diferente do 2º echo
> > > ? é
> > isso
> > > mesmo ? mas em que linha da sua shell que a variável ${1} foi
> > > modificada
> > ?
> > > Aliás, agora segue uma pergunta que acho que só o Júlio saberá
> responder:
> > >
> > >
> > >
> > > A gente consegue dentro do shell alterar o valor de $1, $2, etc ?
> > >
> > >
> > >
> > >
> > >
> > > Emerson Domingues Souto
> > >
> > > Tecnologia da Informação
> > >
> > > Marítima Seguros S/A
> > >
> > >
> > >
> > >
> > >
> > > De: address@hidden <mailto:
> > shell-script%40yahoogrupos.com.br> [mailto:shell-
> address@hidden<mailto:
> > shell-script%40yahoogrupos.com.br> ]
> >
> > > Em nome de Isac Luz
> > > Enviada em: segunda-feira, 6 de agosto de 2012 15:36
> >
> > > Para: address@hidden <mailto:
> > shell-script%40yahoogrupos.com.br>
> > > Assunto: Re: [shell-script] como mudar o valor de um parametro?
> > >
> > >
> > >
> > >
> > >
> > > Vou exemplificar para ver se consigo me fazer entender:
> > >
> > > 1. Tenho um sh masomenos assim:
> > > #!/bin/sh
> > > #
> > > # nexx_funcoes.sh - Concentra as funções mais usadas pelos scripts
> > internos
> > > em Produção
> > > #
> > > # Autor: Isac R. Luz <address@hidden <mailto:isacluz%40gmail.com>
> > <mailto:isacluz%40gmail.com> >
> > > <address@hidden <mailto:isacluz%40gmail.com> <mailto:
> > isacluz%40gmail.com> >
> >
> > > # Origem: 02/08/2012
> > > #
> > > #----------------------------------------------------------
> > >
> > > ...
> > > renomeiaArquivoComEspaco() {
> > > verificaParametros "$@"
> > > verificaSeArquivo "$@"
> > > dir=$(dirname "${1}")
> > > arq=$(basename "${1}")
> > > mv -v "${dir}/${arq}" "${dir}/${arq// /}" 2> /dev/null if [ ${?} -ne
> > > 0 ]; then echo "Ocorreu algum problema ao mover o arquivo de
> > > entrada:
> > > ${dir}/${arq} para ${dir}/${arq// /} !"
> > > exit 1
> > > else
> > > set - "${dir}/${arq// /}"
> > > echo "Parametro 0 = ${0}"
> > > echo "Parametro 1 = ${1}"
> > > fi
> > > }
> > > ...
> > >
> > > exit
> > >
> > > E existem no servidor outros sh que irão utilizar essa função do tipo:
> > >
> > > #!/bin/sh
> > > #
> > > # exec_conversao_layout.sh - Efetua a verificação do layout de
> > > entrada e converte para novo layout # # Autor: Isac R. Luz
> > > <address@hidden <mailto:isacluz%40gmail.com>
> > <mailto:isacluz%40gmail.com> >
> > > <address@hidden <mailto:isacluz%40gmail.com> <mailto:
> > isacluz%40gmail.com> >
> >
> > > # Origem: 21/11/2011
> > > #
> > > #----------------------------------------------------------
> > > source /home/user/config/ nexx_funcoes.sh
> > >
> > > ...
> > > # 1o echo
> > > echo "Arquivo de entrada = ${1}!"
> > > renomeiaArquivoComEspaco ${1}
> > > # 2o echo
> > > echo "Arquivo de saida = ${1}!"
> > >
> > > ${TRADUTOR} ${BC} ${1} ${ArqSaida} verbose=true if [ $? -eq 0 ];
> > > then comandos else erroTradutor $@ exit 1 fi
> > >
> > > exit 0
> > >
> > > Neste contexto, após a execução do renomeia, o parâmetro ${1} do
> > > primeiro echo será igual ao parâmetro ${1} do segundo echo, ou seja,
> > > ainda com espaço, quando na verdade ele já foi renomeado.
> > >
> > > Esse é o dilema que pretendo resolver.
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação,
> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em http://www.listas-
> discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
> Links do Yahoo! Grupos
> 



reply via email to

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