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`
這樣就能成功獲取值了
相關推薦
shell 指令碼中,grep無法讀取前一個命令結果輸出的一個原因
前幾天,因為要實現一個小功能,想用shell指令碼來寫點邏輯。遇到一個問題這裡記錄分享一下: 檢視so檔案中是否有未實現的函式,使用ldd檢視,結果如下: 我想通過獲取ldd -r命令的結果中是否存在“undefined symbol"這樣的結果。很自然會想到使用
shell指令碼中的grep命令引數使用方法介紹(轉載)
用‘grep’搜尋文字檔案如果您要在幾個文字檔案中查詢一字串,可以使用‘grep’命令。‘grep’在文字中搜索指定的字串。舉個例子:假設您正在‘/usr/src/linux/Documentation’目錄下搜尋帶字串‘magic’的檔案: $ grep magic /u
oracle中,將兩上select語句的結果作為一個整體顯示出來
1、union 對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序。 2、union all 對兩個結果集進行並操作,包括重複行,不進行排序。 3、intersect 對兩個結果集進行交集操作,不包括重複行,同是進行預設規則的排序。 4、minus 對兩個結果
分享一段shell指令碼--su許可權下自動讀取某個GPIO電平,判斷為低即自動關機的功能
以下內容均為原創,歡迎轉載,轉載請說明來源:https://blog.csdn.net/masterbee/article/details/78832701 sudo sh -c "echo 50 > /sys/class/gpio/export"sudo sh -c "echo "in
shell指令碼中的數學運算,重定向,alias
1. 整數運算:#!/bin/bashnum1=4num2=5let result1=num1+num2echo $result1let num1++let num2--result2=$[ num1 + num2 ]result3=$[ $num1 + 10 ]echo $
shell指令碼中函式呼叫的返回值,以及退出狀態問題
最近開始學習shell指令碼,由於之前沒怎麼接觸過linux和shell,所以一切從頭開始學起 shell指令碼編寫方法與程式設計類似,只是趨向於面向物件程式設計(個人理解,如果錯誤,麻煩各位老鳥指出)。其他關於shell指令碼到底是怎麼樣的一個東西大家
shell指令碼中常見工具grep的使用
grep:文字過濾器,如果僅僅是過濾文字,可使用grep,其效率要比其他的高很多; 提到grep我們不得不提正則表示式, 正則表示式:規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語
shell指令碼中賦值給變數中有空格, 導致命令執行失敗
功能需求 統計指定時間程式傳送的資料量(按照發送時間) 傳送時間格式2017-12-14 16:18:11, 本來向獲取小時格式 date +'%Y-%m-%d %H' --date="-
解決方式-在Mac系統中,Eclipse無法導入含有中文路徑的project
導入 pan support cati 一行 oct tracking -a ctype 1、改動eclipse.app/Contents/Info.plist。查找 <key>CFBundleExecutable<key>在其上方加入下面
shell指令碼中的for迴圈和while迴圈
基礎for迴圈有三種: ①直接寫-------例如:for i in 1,2,3,4(注:i 是變數; in是在什麼地方;do和done之間是迴圈體) &n
學習Linux shell指令碼中連線字串的方法
這篇文章主要介紹了Linux shell指令碼中連線字串的方法,如果想要在變數後面新增一個字元,可以用一下方法: 程式碼如下: $value1=home $value2=${value1}"=" echo $value2 把要新增的字串變數新增{},並且需要把$放到外面。 這樣輸出的結果
shell指令碼中$的用處
1.$0 獲取當前執行的shell指令碼的檔名,包括路徑。[[email protected] ~]# vi test.sh[[email protected] ~]# cat test.shecho $0[[email protected] ~]# sh test.shtest
shell指令碼中關於getopts的使用方法
例子: while getopts ":e:s:pd:l" arg; do case $arg in e) ghs_env=$OPTARG ;; s)
Shell 指令碼中的檔名匹配和命令執行
理解下 shell 指令碼中的檔名匹配和命令執行的順序與結果。我們學習這個的目的是可以熟悉的在 shell 指令碼中寫出快速的找到檔案的命令。它可以匹配檔名中的任何字串,匹配檔名中的單個字元以及匹配檔名中的字母或數字符號。 首先我們來看看匹配檔案的符號
Shell 指令碼中執行mysql語句
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Linux/Unix shell 指令碼中呼叫SQL RMAN指令碼
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
shell指令碼中的函式與子shell
shell指令碼中的函式與子shell 原文https://www.jianshu.com/p/7db79d7997b5 函式 函式的使用 bash中也有函式。一個函式就是一個子程式,是用於實現一串操作的程式碼塊。bash中的函式的形式如下: functi
Shell指令碼中併發執行緒以及併發數的控制
http://blog.chinaunix.net/uid-8478094-id-3995108.html Shell指令碼中併發執行緒以及併發數的控制 主要記錄一下Shell指令碼中的命令的併發和序列執行。 預設的情況下,Shell指令碼中的命令是序列執行的,必須等到前一條命令
shell指令碼中向hive動態分割槽插入資料
set hive.exec.dynamic.partition=true; #開啟動態分割槽,預設是falseset hive.exec.dyn
shell 指令碼中獲取命令的輸出
這個主要介紹的方法是獲取命令的輸出內容,而不是命令執行成功與否的返回值。 通常情況下,在shell指令碼中需要獲取命令的輸出內容,然後根據輸出內容判斷下一步的執行操作。 比較常用的一種方式就是, 匹配命令輸出的內容中是否存在某些關鍵字,選擇執行的不同動作。 比較常用的一種方式就是