首页 > 解决方案 > 如何将 perl 脚本中的空字符串作为命令行参数传递给 java 文件

问题描述

我有一个脚本 order.pl 它有 3 个变量

$dbcount=$ARGV[0];
if($dbcount == ""){$dbcount = 196001;}

$Num_Batches =$ARGV[1];
if($Num_Batches == ""){$Num_Batches=1;}
print "batches:$Num_Batches\t";

$TimeStamp = $ARGV[2];
if($TimeStamp == ""){$TimeStamp = "";}

$DBFetch = 'java GetWOConfHold_Auto '. $dbcount." ".$TimeStamp ;
print "DBFetch:$DBFetch\n";
print "timestamp :$TimeStamp";
system($DBFetch);

这里的java文件是GetWOConfHold_Auto.java,我想将dbcount和空字符串作为命令行参数发送到GetWoConfHol_Auto java文件,但是

运行时显示

perl order.pl 196000 1
batches:1       timestamp:      dbcount:196000  DBFetch:java GetWOConfHold_Auto 196000 

timestamp :args[0] 19600 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at GetWOConfHold_Auto.main(GetWOConfHold_Auto.java:18)
no of picking updates data : 0
No data.exiting

我试图打印时间戳,但它显示

timestamp :args[0] 19600  not the empty String

在java中它停在主要方法签名处

我想将空字符串作为命令行参数发送到 java 文件。我检查时间戳是否为空,然后从属性文件中选择值

标签: javaperl

解决方案


system的字符串变体中,您需要引用空字符串。您是否尝试过的列表版本system

my $DBFetch = system 'java', 'GetWOConfHold_Auto' ,$dbcount, $TimeStamp;

推荐阅读