單引號和雙引號括起grep
模式有什麼區別嗎?grep模式單引號和雙引號
grep "abc" file.txt
和
grep 'abc' file.txt
我問,因爲沒有辦法,我可以測試我自己所有可能的情況,我不想跌入我拿錯的情況下:)
單引號和雙引號括起grep
模式有什麼區別嗎?grep模式單引號和雙引號
grep "abc" file.txt
和
grep 'abc' file.txt
我問,因爲沒有辦法,我可以測試我自己所有可能的情況,我不想跌入我拿錯的情況下:)
我看到一個區別,如果你有特殊字符:
例:
grep "foo$barbase" file.txt
shell將嘗試擴展變量$barbase
,這可能不是你想要做的。
相反,如果你鍵入
grep 'foo$barbase' file.txt
$bar
是字面上。
最後,默認情況下總是更喜歡單引號,它更強。
在雙引號,下面的字符有特殊含義:「$」, 「'」,「\」,並且,如果啓用了歷史擴展,「!」。
用於執行的字符'$'和'’ retain their special meaning within double quotes ($ for variables and
'。
特殊參數'*'和'@'在前面加$時保留它們在 雙引號中的特殊含義作爲輸入。
「$」,「'」,「」「,‘\’,或換行可以通過 前面加一個反斜槓他們逃脫了。接着當‘$’
反斜槓保留其特殊的意義, ''', ''','\'或換行符。沒有 特殊含義的字符前面的反斜槓未作修改。
它也將有助於檢查shell擴展:
https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions
一個很好的教程:https://en.wikibooks.org/wiki/Bash_Shell_Scripting – Zhenhua
最後,默認情況下總是比較喜歡簡單的引號,它更強。 - >你的意思是單引號,對嗎? :) –