2014-10-27 58 views
0

我剛開始學習如何創建bash腳本。在bash中是否有命令檢查程序是否可以運行

我想知道是否有方法來測試程序是否可以運行。例如,我想測試NCL是否運行。

如果我寫了一個終端上NCL我得到

xxx$ ncl 
dyld: Library not loaded: /usr/local/lib/libgomp.1.dylib 
    Referenced from: /usr/local/ncl-6.2.1/bin/ncl 
    Reason: image not found 
Trace/BPT trap: 5 

這意味着,NCL已經安裝,但程序不能由於缺乏圖書館的運行。

我想知道是否有一個命令在bash中給我1或0,取決於如果NCL(或其他程序)運行或不運行。

+2

在這種情況下,'ncl'命令運行,但失敗。事實上,由於缺少庫而不是其他一些錯誤,這可能不是bash能夠可靠檢測到的。 – 2014-10-27 20:59:54

+0

如果您具體談論缺少的依賴關係,請查看ldd。 – tolanj 2014-10-27 22:24:46

回答

0

你應該能夠在這樣的bash檢查命令的返回值...

somecommand argument1 argument2 
RETVAL=$? 
[ $RETVAL -eq 0 ] && echo Success 
[ $RETVAL -ne 0 ] && echo Failure 
+0

@AJaramillo簡潔地說,'somecommand argument1 argument2 && echo Success || echo failure「,或者,因爲它在shell腳本中可能更有用,所以'somecommand argument1 argument2 ||如果命令無法運行或錯誤停止,則返回'以停止處理。 – gboffi 2014-10-30 16:24:38

0

這一切都依賴於NCL命令的返回碼。試試ncl並在得到錯誤消息後輸入echo $?並查看輸出。該值爲您提供以前輸入的命令的返回碼,在我們的例子中爲ncl。如果該值不是0,則ncl無法運行。

0

謝謝你Matt和Subashini,你的回答幫了我很多。 這個問題很容易解決。 遵循你的建議,我創建了一個名爲'ncltest.ncl'的ncl腳本文件,打開和關閉ncl只是爲了檢查。然後,檢查的bash腳本是這樣的:

ncl ncltest.ncl 
testfile=$? 
if [ $testfile -eq 0 ]; then 
echo 'It worked' 
else 
echo 'It did not work' 
fi 

NCL如果工作和其他數取決於問題的則返回0的情況。

相關問題