Необходимо передать аргументы в скрипт adcfgclone.pl

Необходимо передать аргументы в скрипт adcfgclone.pl

Я просто хотел узнать, есть ли способ передать аргументы в скрипт Perl ( adcfgclone.pl) во время компиляции (т.е. значения не должны запрашиваться во время выполнения скрипта)

Ниже приведен пример передачи значений после запуска скрипта.

Укажите значения, необходимые для создания нового файла контекста 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

Примечание: я ввожу все указанные выше значения во время выполнения скрипта, поэтому я просто передаю все эти аргументы в один файл и просто запускаю скрипт adcfgclone.pl.

решение1

Честно говоря, я не знаю, это ли именно то, что вы хотите. Вся эта штука с компиляцией/выполнением perl немного сбивает меня с толку.

Вы можете попробовать autoexpect (входит в пакет expect). Сначала вам нужно запустить ваше приложение perl через autoexpect, отвечая на входные данные. Но после этого вам нужно будет только запустить скрипт вывода, сгенерированный autoexpect, который заполнит все входные данные.

кот 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

Или, что еще проще, вы также можете попробовать перенаправить входной файл в свой скрипт Perl:

cat input.text 
bart

./expect-test.pl < input.text 
Enter your input: You typed: bart

решение2

Возможно, немного поздно для OP, но все еще актуально, если у кого-то еще есть тот же вопрос. В основном все ответы на эти вопросы находятся в файле, который называется файлом контекста. После того, как вы зададите среду Apps, файл контекста будет в ${CONTEXT_FILE}. Так что, запустив:

perl adcfgclone.pl appsTier "$CONTEXT_FILE"

Вас попросят ввести только пароль приложения.

Связанный контент