簡體   English   中英

無法將參數從Shell腳本傳遞到Perl腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM