【发布时间】:2017-03-16 18:29:03
【问题描述】:
我有下一个 shell 脚本,我将其命名为 run.sh
#!/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 脚本传递的参数?
【问题讨论】:
-
这不是问题,perl 脚本确实收到了值。在第 7 行打印。
print "direktorioa : $direktorioa \n";进行验证。 -
我放了打印,但它被忽略了,第 9 行的错误仍然存在。
-
run.sh 中的 perl shebang 是什么?
-
将所有 shell 程序命名为
run.sh并不能帮助您找到错误。 -
“我放了打印,但它被忽略了” 我怀疑你编辑错了
run.sh。这是因为至少有两个名为run.sh的程序,可能还有更多。