Precisa passar argumentos no script adcfgclone.pl

0

Eu só queria saber se existe alguma maneira de passar os argumentos no script perl ( adcfgclone.pl ) durante o tempo de compilação (ou seja, os valores não devem ser perguntados durante o tempo de execução do script)

Abaixo está um exemplo que eu estou passando os valores depois de executar o script.

Forneça os valores necessários para a criação do novo arquivo de contexto APPL_TOP.

Target System Hostname (virtual or normal) [proddb] :
Target Instance is RAC (y/n) [n] : n    
Target System Database SID : proddb1    
Target System Base Directory : /d06/oravis    
Target System utl_file_dir Directory List : /usr/tmp    
Number of DATA_TOP's on the Target System [1] : 1    
Target System DATA_TOP Directory 1 [/d01/oravsn12/db/apps_st/data] : /d06/oravis/db/apps_st/data    
Target System RDBMS ORACLE_HOME Directory [/d06/oravis/db/tech_st/10.2.0] : /d06/oravis/db/tech_st/10.2.0    
Do you want to preserve the Display [null] (y/n) ? : n    
Target System Display [sharkap:0.0] :    
Target System Port Pool [0-99] : 34

Nota: Estou inserindo todos os valores acima durante o tempo de execução do script, portanto, apenas passo todos esses argumentos em um arquivo e apenas execute o script adcfgclone.pl .

    
por Maheswar 30.05.2017 / 09:25

1 resposta

0

Perfeitamente honesto, não sei se é exatamente isso que você quer. Toda essa coisa de compilação de tempo / tempo de execução do perl é um pouco confusa para mim.

Você pode tentar o autoexpected (incluído no pacote expect). Inicialmente, você tem que executar o seu aplicativo perl através de autoexpecto, respondendo as entradas. Mas depois disso, você só precisa executar o script de saída gerado pelo autoexpect, que preenche todas as entradas.

cat expect-test.pl

#!/bin/perl

use warnings;
use strict;

print "Enter your input: ";
my $input = <STDIN>;
chomp $input;
print "You typed: $input\n";
autoexpect -f expect-test.exp ./expect-test.pl
autoexpect started, file is expect-test.exp
Enter your input: bob 
You typed: bob
autoexpect done, file is expect-test.exp
./expect-test.exp
spawn ./expect-test.pl
Enter your input: bob 
You typed: bob

Ou, mais simplesmente, você também pode tentar redirecionar seu arquivo de entrada para o seu script perl:

cat input.text 
bart

./expect-test.pl < input.text 
Enter your input: You typed: bart
    
por 30.05.2017 / 17:40