首頁 > 軟體

Grep 查詢bash指令碼中的註釋程式碼

2020-06-16 17:24:10

出於安全性的考慮,不建議在bash指令碼中註釋掉不使用的程式碼。也就是說如果某段程式碼不使用了,那麼應該刪除掉,而不是簡單地注釋掉。假如你突然意識到這一點,而以前並沒有遵從這個原則,現在需要找出指令碼中的註釋性程式碼,這可能是一個不小的工作量,讓我們寫一個指令碼來幫助你吧,準確性無法達到百分之百,但是能夠提升效率。

1.找出注釋性程式碼的特點。
 因為是bash指令碼,注釋行必然包含#
grep "#"
 2.判斷其是普通注釋還是程式碼註釋
 這是重點,也是難點,如何判斷一個注釋行是普通注釋還是對程式碼的註釋呢?
# this is a common comment

下面這行是對程式碼的註釋
# if [ -e /etc/passwd ];then cat /etc/passwd;fi

3.要分析bash程式碼的特點,在這些特點之前加上一個#,這個就是注釋程式碼。
 所以要把註釋程式碼的模式寫入一個pattern檔案,使用grep查詢就可以了。
grep -E -f pattern.txt
 pattern.txt內容如下:
#[ ]if
 #[ ]for
 #[ ]*while

grep -e選項,用來指定多個模式,查詢符合pattern1或pattern或pattern3的模式。
grep -e pattern1 -e pattern2 -e pattern3 -r -n filepath or dirpath

grep讀取檔案中的模式。
grep -f pattern_file

-r 遞回選項 --recursive
-n 顯示行號
-E 支援正規表示式
-l 顯示匹配的檔名
-L, --files-without-match
-q 安靜模式
-v 相反
-i 忽略大小寫

問題:linux命令執行的返回值時數位還是字串?
grep的返回值在自動判斷的時候常常用到
 特殊之處在於使用-v的時候
grep -v "pattern" filename 也就是有沒有pattern的行才是返回0,這個邏輯有點繞。

0意味著有條件所指定的值

if [ $? -eq 0 ]
 then
 do sth
 fi

if [ $? -ne 0 ]
 then
 do sth
 fi

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-01/139219.htm


IT145.com E-mail:sddin#qq.com