2011-04-15 170 views

回答

3
 
#!/bin/bash 

perl-script args && exit 

如果你想繼續運行,返回值是$?

請注意,perl腳本返回的值與腳本輸出之間存在區別。要獲得腳本的輸出,使用$()操作:

 
#!/bin/bash 
output=$(perl-script args) 

echo The perl script returned $? 
echo The output of the script was $output 

+0

實際上,如果返回的值不爲0,我希望它繼續運行 – user391986 2011-04-15 18:55:43

+0

我得到:當我在bash腳本中添加&&時出現命令 – user391986 2011-04-15 19:09:01

+0

@ user391986如果cmd返回零,則'cmd && exit'將退出,並且如果cmd返回任何其他值,將繼續運行。不知道爲什麼你沒有找到命令。 – 2011-04-15 22:24:00

2

爲了得到一個返回代碼,使用exit功能。例如:

Perl腳本:

if ($success) { 
    $return_value = 0; 
} else { 
    $return_value = 1; 
} 
exit($return_value); 

bash腳本:

perl scriptname args > outfile && exit 

這是假設你要退出,如果Perl腳本的返回值是0,你想使保存的輸出在outfile中的Perl腳本。如果返回值不爲零,則存儲在$?中,如果您願意,可以將該值保存到變量中。

+0

來自perl腳本我打印「0」還是返回「0」也如何獲得$ return_value中的perl值 – user391986 2011-04-15 18:54:42

+1

@user是Perl腳本。您使用'exit'函數從腳本中返回一個值。你可以像你通常在Perl中那樣將任何你喜歡的數字綁定到'$ return_value'。我在perl例子中加了一點來澄清。 – 2011-04-15 18:55:36

1

您的perl腳本:foo.pl

#!/usr/bin/perl 
# do something and then 
exit 1; 

而且你的bash腳本foo.sh內:

#!/bin/bash 
# do something and then call perl script 
perl foo.pl 

# check return value using $? 
echo "perl script returned $?" 
+0

1並不意味着一個成功的返回值,順便說一句,'出口1'需要一個分號。 – 2011-04-15 18:54:39

+0

謝謝補充缺少';'和正確的'1'絕對不代表成功的價值,這只是一個例子。 – anubhava 2011-04-15 18:56:41