chama um script de shell usando uma variável

1

Eu tenho um script de shell, que chama internamente uma variável (que armazena um script de shell executável)

O script da shell começa

var=$(awk -F'|' '{print $2}' $TEMPFILE)

O valor na variável é . /lapp2/Scripts/mdm.ksh

execute o shell chamando-o

$var

O método acima para executar um shell falha (está lendo como string?)

No entanto, se eu escrever o comando diretamente, os scripts de shell serão executados

    
por Parthi 03.04.2017 / 18:07

1 resposta

0

Sua variável $var não contém o valor que você diz que ela deve conter. De acordo com a sua pergunta, deve conter isto:

. /lapp2/Scripts/mdm.ksh

Mas o valor de depuração de echo "var is '$var'" mostra que $var realmente contém:

/etlapp2/$1/mdm/Scripts/mdmxftpg.pl /etlapp2/$1/mdm/Scripts/mdmxftpg.aimtlane

Existem dois problemas aqui. O óbvio é que o valor real não é o valor esperado. Porém, de maneira mais sutil, observe que $var contém um literal $1 em parte do caminho, em vez de uma interpolação do primeiro argumento de linha de comando. Eu suspeito que você tenha usado aspas simples em vez de aspas duplas em algum momento durante a atribuição de $var .

Compare essas duas alternativas

  • a='apple'; var='/path/to/$a/script.sh'; echo "var=$var" # incorrect
  • a='apple'; var="/path/to/$a/script.sh"; echo "var=$var" # correct

Você precisa revisar seu código para descobrir por que o valor não é o esperado e para corrigir esses erros.

    
por 04.04.2017 / 01:03