1. 程式人生 > >shell 指令碼中,grep無法讀取前一個命令結果輸出的一個原因

shell 指令碼中,grep無法讀取前一個命令結果輸出的一個原因

前幾天,因為要實現一個小功能,想用shell指令碼來寫點邏輯。遇到一個問題這裡記錄分享一下:

檢視so檔案中是否有未實現的函式,使用ldd檢視,結果如下:


我想通過獲取ldd -r命令的結果中是否存在“undefined symbol"這樣的結果。很自然會想到使用grep來獲取

便這樣來寫:check_res=`ldd -r name.so|grep undefine`

結果變數check_res死活就是一個空值,一直在查是什麼原因。

最後發現,管道傳給grep的資料,只有標準輸出,而undefined symbol資料是在錯誤輸出中。

所以解決辦法是需要將標準錯誤重定向到標準輸出中,才能獲取結果值。

如下寫法:

check_res=`ldd -r name.so 2>&1|grep undefine`

這樣就能成功獲取值了