【问题标题】:how to pass an empty String from perl Script to java file as a command line argument如何将 perl 脚本中的空字符串作为命令行参数传递给 java 文件
【发布时间】:2019-01-17 00:30:41
【问题描述】:

我有一个脚本 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 文件。我检查时间戳是否为空,然后从属性文件中选择值

【问题讨论】:

  • == "" 错误,== 比较数字,在 Perl 中使用 eq 比较字符串。

标签: java perl


【解决方案1】:

system的字符串变体中,需要将空字符串加引号。 你试过system的列表版吗?

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

【讨论】:

    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2012-10-21
    • 2016-09-08
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多