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 16:16:45 -0300

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:address@hidden] Em nome de Isac Luz
Enviada em: segunda-feira, 6 de agosto de 2012 15:36
Para: address@hidden
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> > 
<address@hidden <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> > 
<address@hidden <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.

Em 6 de agosto de 2012 12:12, Emerson Domingues Souto - H2M <
address@hidden <mailto:emersons.h2m%40maritima.com.br> > escreveu:

> **
>
>
> Então, será que o problema não é pq a variável $1 entende como parâmetro
> de entrada o inicio da string até o espaço em branco ? ou seja, vc pensa
> que está passando 1 parâmetro quando na verdade a função entende que são 2
> parâmetros de entrada ?
>
> Se for isso a solução é usar $* no lugar de $1
>
> Exemplo:
>
> renomeiaArquivoComEspaco() {
> dir=$(dirname "$*")
> entrada=$(basename "$*")
>
> saida=$(echo "${entrada}" |sed 's/ //g')
> mv -v "$*" "${dir}/${saida}"
>
> set - "${dir}/${saida}"
> echo "Parametro Entrada = $*"
> }
>
> 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 11:56
> Para: address@hidden <mailto:shell-script%40yahoogrupos.com.br> 
> Assunto: Re: [shell-script] como mudar o valor de um parametro?
>
>
> então, estou criando um arquivo com funções que serão executados por
> outros scripts, e neste caso essa função será bastante utilizada por
> outros usuarios, o problema é que consigo mudar o valor do parametro 1
> dentro da função, mas fora não consigo atribuir o novo valor
>

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