2011-04-01 155 views
0

我想從命令行調用我的perl腳本作爲命令。 例子可以說我有一個Perl文件中像下面調用perl腳本作爲shell命令

#!/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+"[email protected]"}' 
    if 0; 
#!/usr/local/bin/perl -w 
@args =("mvn","package"); 
    system(@args) == 0 
    or die "system @args failed" 

,然後將該文件命名爲「包'。chmod on package

當我嘗試運行包時,出現錯誤 「無法打開perl腳本[] x:沒有這樣的文件或d irectory

有人可以請指出,至於如何做到這一點妥善?

感謝

Neeraj

+0

你需要在你的eval中使用雙引號,而不是單引號。 – 2011-04-01 07:14:11

+3

你的perl文件不需要以'.pl'結尾:Perl不關心。只需在'package'文件的頂部使用'#!/ usr/local/bin/perl -w'即可。文件名後綴真的只是一個Dos/Windows的東西 – 2011-04-01 07:21:17

+0

似乎仍然拋出同樣的錯誤。 – Neeraj 2011-04-01 07:28:47

回答

2

更改您要使用並使其可執行文件的名稱:

cp package.pl package 
chmod +x package 

運行:

package 

或:

./package 
+1

或*別名*它,如果你在* NIX。 – Axeman 2011-04-01 13:44:15

2

更改單引號雙引號和轉義內雙引號。此外,似乎有一些路徑問題。嘗試用絕對路徑調用腳本。我嘗試添加 「./」 和它的工作:

#!/bin/sh 

echo "This is shell" 

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

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