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

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

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


From: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] como mudar o valor de um parametro?
Date: Mon, 6 Aug 2012 18:13:25 -0300

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: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]



reply via email to

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