歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Grep 查找bash腳本中的注釋代碼

Grep 查找bash腳本中的注釋代碼

日期:2017/2/28 13:45:05   编辑:Linux教程

出於安全性的考慮,不建議在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

Copyright © Linux教程網 All Rights Reserved