1、單引號:全引用。shell命令不做轉義處理。
2、雙引號:部分引用。shell命令會做轉義處理。優先解析命令和變量。
3、不加引號:效果等同於雙引號的作用,優先解析命令和變量。
需要轉義的特殊字符:\,$等
1、查找特殊字符舉例:
1.1、查找\字符
grep '\\' test.log # 單引號全引用,shell不做轉義處理;\\———shell——\\——grep——\——>查找
# \\ shell不做轉義處理傳遞給grep,grep做轉義處理為\,拿去查找\字符
grep "\\\\" test.log # 雙引號部分引用,shell做特殊字符的轉義處理;\\\\———shell——\\——grep——\——>查找
# \\\\ shell做轉義處理為\\傳遞給grep,grep做轉義處理為\,拿去查找\字符
1.2、查找$字符
grep '\$' test.log # 單引號全引用,shell不做轉義處理;
# \$ shell不做轉義處理傳遞給grep,grep做轉義處理為$,拿去查找$字符
grep "\\$" test.log # 雙引號部分引用,shell做特殊字符的轉義處理;
# \\$ shell做轉義處理為\$傳遞給grep,grep做轉義處理為$,拿去查找$字符
2、查找單雙引號舉例:
2.1、查找單引號'name'
grep "'name'" test.log
# 如果用單引號方式去查找,無論外面嵌套多少層單引號,都只能匹配出name,而不是'name'
2.2、查找雙引號"age"
grep '"age"' test.log
# 如果用雙引號方式去查找,無論外面嵌套多少層雙引號,都只能匹配出age,而不是"age"
對於單雙引號同時存在需要匹配的情況下,比較簡單粗暴的處理方式就是用單引號方式查找,查找字符里的單雙引號均用.(點號)去匹配。
grep '.name.' test.log grep '.age.' test.log