将参数从 bash 发送到 perl

将参数从 bash 发送到 perl

我真的需要帮助

我想将参数从 bash 文件发送到 perl 文件。我不知道为什么它对我来说不起作用。我的测试代码如下

********bash 代码 *********

#!/usr/bin/env bash

chmod +x ../../../utils/run.pl
../../../utils/run.pl 1 2 3

******** perl *******

#!/usr/bin/env perl
#---------------------#
#  PROGRAM:  argv.pl  #
#---------------------#

$numArgs = $#ARGV + 1;
print "thanks, you gave me $numArgs command-line arguments:\n";

foreach $argnum (0 .. $#ARGV) {
    print "$ARGV[$argnum]\n";
}

******* 结果 ***

thanks, you gave me 0 command-line arguments:

请问有什么帮助吗?

答案1

我不知道你的情况是否如此,但这种情况在 Windows 上可能会发生。我相信如果扩展名不在PATHEXT环境变量中,cmd.exe 不会将参数传递给脚本。即使它已注册ASSOC

    assoc .pl=PerlScript
    ftype PerlScript=C:\bin\cygwin64\bin\perl.exe "%%1" %%*

但是你仍然可以通过以下方式运行脚本

    # perl script.pl args

这种调用方法还可以让你跳过 chmod

另一个大胆的猜测是,您env生成了一些奇怪版本的 perl 可执行文件。您可能想检查结果是否合法。which -a perl是另一个有用的工具。

相关内容