2021-05-12 14:32:11
Grep 查詢bash指令碼中的註釋程式碼
出於安全性的考慮,不建議在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
相關文章