adcfgclone.pl スクリプトで引数を渡す必要がある

adcfgclone.pl スクリプトで引数を渡す必要がある

adcfgclone.plコンパイル時にPerl スクリプト ( ) で引数を渡す方法があるかどうか知りたいだけです(つまり、スクリプトの実行時に値を尋ねるべきではありません)

以下は、スクリプトを実行した後に値を渡す例です。

新しい 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

注: 上記のすべての値はスクリプトの実行時に入力されるため、すべての引数を 1 つのファイルに渡してスクリプトを実行するだけですadcfgclone.pl

答え1

正直に言うと、これがまさにあなたが望んでいることかどうかはわかりません。Perl のコンパイル時/実行時のことは、私にとって少しわかりにくいです。

autoexpect (expect パッケージに含まれています) を試すことができます。最初に、perl アプリケーションを autoexpect で実行し、入力に応答する必要があります。ただし、その後は、すべての入力を埋める autoexpect によって生成された出力スクリプトを実行するだけで済みます。

猫の期待テスト.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"

アプリのパスワードのみが求められます。

関連情報