Shell 如何判別grep有沒有匹配到內(nèi)容

grep命令是非常強(qiáng)大的搜索工具松忍,可以匹配常規(guī)字符串蹋绽,也可以使用正則表達(dá)式匹配(-e-E選項)甥郑,可以匹配單個文件逃魄,也可以匹配多個文件(使用通配符標(biāo)識需要進(jìn)行匹配的文件),可以匹配當(dāng)前文件夾下的文件澜搅,也可以遞歸匹配目錄下的文件(-r選項)伍俘。

在某些情況下,我們需要判斷grep命令是否成功匹配到內(nèi)容(也即判斷目標(biāo)文件內(nèi)是否存在我們要查找的內(nèi)容)勉躺。一般有兩種方法可以實現(xiàn):

  1. 借助上一進(jìn)程的返回值

  2. 判斷匹配結(jié)果是否為空字符串

第一種方法通過判斷上一進(jìn)程的返回值(緊接在執(zhí)行完grep命令之后)癌瘾,成功執(zhí)行返回0,執(zhí)行失敗返回1饵溅。緊接在grep執(zhí)行之后妨退,判斷$?是否為0,可以實現(xiàn)判斷是否匹配到查找的內(nèi)容蜕企,示例如下:

# 查找a.txt中是否存在www.字符串
grep "www." a.txt
if [ $? -eq 0 ]
then
   echo "find www."
fi

第二種方法將grep的匹配結(jié)果賦值給一個變量咬荷,判斷變量字符串長度是否為零,可以實現(xiàn)判斷grep是否查找到相應(yīng)的內(nèi)容轻掩。示例如下:

match_str=`grep "www." a.txt`
if [ -n "$match_str" ]
then
  echo "find www."
fi

注意幸乒,上述if判斷中一定要把匹配結(jié)果變量加上雙引號,標(biāo)識為字符串唇牧,否則如果match_str為空罕扎,腳本會報錯。

判斷字符串長度是否為零(為空)有兩種方式:

-n 字符串長度不為零(True)丐重,為零(False)

-z 字符串長度為零(True)腔召,不為零(False)

當(dāng)然,也可以使用邏輯非!表達(dá)式將判斷結(jié)果反轉(zhuǎn)扮惦,如判斷一個字符串a(chǎn)為零臀蛛,可以表示為:if [ -z "$a" ]if [ ! -n "$a" ]

補充知識:

# 獲得當(dāng)前進(jìn)程 ID
$$
# 獲得之前(上一個)進(jìn)程 ID
$!
# 獲得之前(上一個)進(jìn)程結(jié)束的狀態(tài)碼 (0 表示成功, 1 表示失敗)
$?

參考:

Bash Shell *,@, #, $$,!, ?,- 和 $_ - 知乎 (zhihu.com)

shell中[][[]]的區(qū)別

Linux shell 邏輯運算符、邏輯表達(dá)式崖蜜、通配符掺栅、元字符、轉(zhuǎn)義符詳解shell邏輯運算符寰宇001的博客-CSDN博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纳猪,一起剝皮案震驚了整個濱河市氧卧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氏堤,老刑警劉巖沙绝,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搏明,死亡現(xiàn)場離奇詭異,居然都是意外死亡闪檬,警方通過查閱死者的電腦和手機(jī)星著,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粗悯,“玉大人虚循,你說我怎么就攤上這事⊙” “怎么了横缔?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長衫哥。 經(jīng)常有香客問我茎刚,道長,這世上最難降的妖魔是什么撤逢? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任膛锭,我火速辦了婚禮,結(jié)果婚禮上蚊荣,老公的妹妹穿的比我還像新娘初狰。我一直安慰自己,他們只是感情好互例,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布跷究。 她就那樣靜靜地躺著,像睡著了一般敲霍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丁存,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天肩杈,我揣著相機(jī)與錄音,去河邊找鬼解寝。 笑死扩然,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聋伦。 我是一名探鬼主播夫偶,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼觉增!你這毒婦竟也來了兵拢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤逾礁,失蹤者是張志新(化名)和其女友劉穎说铃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡腻扇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年债热,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幼苛。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡窒篱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舶沿,到底是詐尸還是另有隱情墙杯,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布暑椰,位于F島的核電站霍转,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏一汽。R本人自食惡果不足惜避消,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望召夹。 院中可真熱鬧岩喷,春花似錦、人聲如沸监憎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲸阔。三九已至偷霉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間褐筛,已是汗流浹背类少。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留渔扎,地道東北人硫狞。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像晃痴,于是被迫代替她去往敵國和親残吩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容