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 solicitados durante o tempo de execução do script)
Abaixo está um exemplo de que estou passando os valores após 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, então apenas passo todos esses argumentos em um arquivo e executo o adcfgclone.pl
script.
Responder1
Perfeitamente honesto, não sei se é exatamente isso que você deseja. Toda essa coisa de tempo de compilação/tempo de execução do Perl é um pouco confusa para mim.
Você pode tentar o autoexpect (incluído no pacote expect). Inicialmente, você deve executar seu aplicativo Perl através do autoexpect, respondendo às entradas. Mas depois disso, você só precisa executar o script de saída gerado pelo autoexpect, que preenche todas as entradas.
gato 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
Responder2
Provavelmente um pouco atrasado para o OP, mas ainda relevante se alguém tiver a mesma pergunta. Basicamente, todas as respostas a essas perguntas estão em um arquivo chamado arquivo de contexto. Depois de definir o ambiente do Apps, o arquivo de contexto estará no formato ${CONTEXT_FILE}
. Então, executando:
perl adcfgclone.pl appsTier "$CONTEXT_FILE"
você só será solicitado a senha do Apps.