【发布时间】:2024-11-02 01:10:01
【问题描述】:
我有一个关于如何在 shell 脚本中执行 perl 文件的问题
我现在有 2 个文件,“test.sh”和“test.pl”,这是我的脚本示例
SHELL 脚本
#!/bin/bash
perl FILEPATH/test.pl
......
PERL 脚本
#!/usr/bin/perl
my $a = "hello"
sub saysomething
{
print $a;
}
.....
我调用shell脚本的方式是:在shell脚本路径下,执行“./test.sh”
以上都在环境下工作 GUN bash,版本 4.2.24(1)-release (i686-pc-linux-gnu) + perl (v5.14.2)
但如果我将这些脚本放在服务器上(我无法更改 bash / perl 版本) GNU bash,版本 4.2.10(1)-release (x86_64-pc-linux-gnu) + perl (v5.12.4),我收到以下消息:
FILEPATH/test.pl:第 2 行:我的:找不到命令
有人知道我该如何解决这个问题吗?
顺便说一句,如果我单独执行 perl 脚本(perl FILEPATH/FILENAME.pl),它会完美运行。
【问题讨论】:
-
FILEPATH是绝对路径还是相对路径?应该是绝对的 -
FILEPATH应该是环境变量吗?如果是这样,那么它应该是$FILEPATH。 -
你说我有 2 个文件:test.sh 和 test.pl,那么 filename.pl 是什么?
-
你确定你的Perl脚本的第一行是
#!/usr/bin/perl吗?如果您要向我们展示代码,最好复制并粘贴它;如果您重新输入,您可能会丢失重要信息。 -
有什么方法可以让
perl FILEPATH/test.pl中的perl'丢失'。例如,您可能有${PERL-perl}而不仅仅是perl(或更好的${PERL:-perl}),或者您有alias perl=''或同样奇怪的东西?您看到的错误表明 shell 正在执行文件,而不是 Perl。我能看到的唯一方法是对代码进行一些隐藏的更改。