Unix

什麼時候在 grep 中使用單引號、雙引號或不使用引號?

  • February 19, 2021

在嘗試在文件中搜尋簡單模式“hello”時,以下所有形式的 grep 都有效:

  • grep 你好文件1
  • grep’你好’文件1
  • grep“你好”文件1

是否存在上述一種形式有效但其他形式無效的特定情況。如果我用一個代替另一個有什麼不同嗎?

這實際上取決於您的外殼。引號(任何一種)主要用於處理空格。例如,以下內容:

grep hello world file1

將在名為“world”和“file1”的文件中查找單詞“hello”,而

grep "hello world" file1

將在 file1 中查找“hello world”。

僅當搜尋字元串包含您希望評估的變數或其他項目時,單引號或雙引號之間的選擇才重要。使用單引號,字元串按字面意思表示,不會發生擴展。使用雙引號,變數被擴展。例如(使用 Bourne 派生的 shell,例如 Bash 或 ZSH):

VAR="serverfault"
grep '$VAR' file1
grep "$VAR" file1

第一個grep將查找文字字元串 " $ VAR1" in file1. The second will expand the " $ VAR”變數並在 file1 中查找字元串“serverfault”。

引用自:https://serverfault.com/questions/69283