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: Isac Luz
Subject: Re: [shell-script] como mudar o valor de um parametro?
Date: Mon, 6 Aug 2012 13:35:47 -0500

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



reply via email to

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