将perl脚本作为shell命令调用

时间:2011-04-01 07:11:22

标签: perl shell exec

我想从命令行调用我的perl脚本作为命令。 示例假设我有一个perl文件,如下面的

#!/usr/local/bin/perl -w
@args =("mvn","package");
    system(@args) == 0
    or die "system @args failed"

我没有使用package.pl

来调用它

我尝试过以下

#!/bin/sh
  eval 'exec /bin/perl –x -S $0 ${1+"$@"}'
    if 0; 
#!/usr/local/bin/perl -w
@args =("mvn","package");
    system(@args) == 0
    or die "system @args failed"

然后将文件'package'命名为.Do chmod on package

当我尝试运行包时,我得到了错误 “无法打开perl脚本[] x:没有这样的文件或目录

有人可以指出我,如何正确地做到这一点?

由于

Neeraj

2 个答案:

答案 0 :(得分:2)

将单引号更改为双引号并转义内部双引号。此外,路径似乎存在一些问题。尝试使用绝对路径调用脚本。我尝试添加“./”并且有效:

#!/bin/sh

echo "This is shell"

eval "exec /usr/bin/perl -x -S ./$0 ${1+\"$@\"}"
   if 0;

#!/usr/bin/perl -w
print "This is Perl\n";

答案 1 :(得分:2)

更改为您要使用的名称并使其可执行:

cp package.pl package
chmod +x package

运行它:

package

或:

./package