在perl中,同時獲取shell腳本返回值和標準輸出。

http://www.cnblogs.com/agostop/archive/2012/04/03/2431548.html

使用perl調用外名命令有很多方法,這裏就不詳細講解。

如有shell腳本a.sh

#!/bin/bash

echo "script out put"

exit 2

有perl腳本test.pl調用a.sh

#!/bin/perl -w

$output = qx(/usr/local/a.sh);

$exitcode = $?;

print "output = " . $output;

print "exitcode = " . $exitcode;

執行此perl腳本./test.pl

你會發現輸出的內容爲

output = script out put

exitcode = 512

明顯就不是你所期望的結果。輸出應該是

 

 output = script out put

exitcode = 2

 

這纔是我們期待的。

原因是,perl內部$?的返回值,會將shell的值乘以8,我們給他除以8,便可以解決。

 

#!/bin/perl -w

$output = qx(/usr/local/a.sh);

$exitcode = $? >>8;

print "output = " . $output;

print "exitcode = " . $exitcode;

再次運行腳本你會發現OK了。

發佈了21 篇原創文章 · 獲贊 3 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章