我真的需要帮助
我想将参数从 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
是另一个有用的工具。