[英]Can not pass arguments from shell script to Perl script
我有一个名为run.sh
的下一个shell脚本
#!/usr/bin/perl -w
#!/bin/sh
BROL="/sc01a4/users/user/brol"
PID=$$
while read line
do
echo "$line" >> $BROL/rolak/1_EUSLEM_MATE/Sarrera_Testua_$PID.xml
done < "${1:-/proc/${$}/fd/0}"
perl $BROL/rolak/NAGUSIA.pl $BROL $PID
该脚本使用两个参数运行NAGUSIA.pl
,即路径BROL
和进程ID(变量PID
。
#!/usr/bin/perl -w
use strict;
use warnings;
my $direktorioa = "$ARGV[0]";
my $prozesua = "$ARGV[1]";
use lib "$direktorioa/rolak/lib";
use SRL::NAGUSIA qw(Egokitu_Sarrera Predikatu_Identifikazioa Predikatu_Desanbiguazioa Argumentuak_Identifikatu Argumentuak_Sailkatu Sortu_Irteera);
Egokitu_Sarrera($prozesua, $direktorioa);
Predikatu_Identifikazioa($prozesua, $direktorioa);
Predikatu_Desanbiguazioa($prozesua, $direktorioa);
Argumentuak_Identifikatu($prozesua, $direktorioa);
Argumentuak_Sailkatu($prozesua, $direktorioa);
Sortu_Irteera($prozesua, $direktorioa);
假定Perl脚本有两个接收这两个参数,但是命令行给出了下一个错误:
Use of uninitialized value $direktorioa in concatenation (.) or string at /sc01a4/users/user/brol/rolak/NAGUSIA.pl line 9.
我使用下一个命令来运行shell脚本:
cat brol/proba_fitxategiak/proba4.txt | sh brol/EHU-eustagger/run.sh | sh brol/rolak/run.sh
我使用的是Linux,而不是Windows。 为什么Perl脚本不接收shell脚本传递的参数?
use
语句在编译时执行,因此
use lib "$direktorioa/rolak/lib";
在执行之前
my $direktorioa = "$ARGV[0]";
更换
use lib "$direktorioa/rolak/lib";
与
use lib "$ARGV[0]/rolak/lib";
也就是说,无论如何,您实际上应该使用以下内容:
use FindBin qw( $RealBin );
use lib "$RealBin/lib";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.