2012-11-08 236 views
5

單引號和雙引號括起grep模式有什麼區別嗎?grep模式單引號和雙引號

grep "abc" file.txt 

grep 'abc' file.txt 

我問,因爲沒有辦法,我可以測試我自己所有可能的情況,我不想跌入我拿錯的情況下:)

回答

5

我看到一個區別,如果你有特殊字符:

例:

grep "foo$barbase" file.txt 

shell將嘗試擴展變量$barbase,這可能不是你想要做的。

相反,如果你鍵入

grep 'foo$barbase' file.txt 

$bar是字面上。

最後,默認情況下總是更喜歡單引號,它更強。

+1

最後,默認情況下總是比較喜歡簡單的引號,它更強。 - >你的意思是單引號,對嗎? :) –

1
  • 在雙引號,下面的字符有特殊含義:「$」, 「'」,「\」,並且,如果啓用了歷史擴展,「!」。

    用於執行的字符'$'和'’ 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

  • 單引號忽略shell擴展。
+0

一個很好的教程:https://en.wikibooks.org/wiki/Bash_Shell_Scripting – Zhenhua