shell中的 單引號' '、雙引號 " " 和 反引號` `


單引號 ''、雙引號 "" 和 shell變量

字符串是 shell 編程中 最常見的 變量,沒有空格的字符串變量可以用 單引號,也可以用 雙引號,也可以不用 引號。 但是當變量 是存在空格的字符串時就需要使用 單引號 和 雙引號 ,否則操作系統會將空格后面的字符串識別成命令。

[root@localhost home]# var=hello world !   #Shell程序執行完 var=hello 后,把 world 解釋為命令。
bash: world: command not found...
[root@localhost home]# 
[root@localhost home]# var="hello world !"
[root@localhost home]# echo ${var}
hello world !
[root@localhost home]# 

 
 

單引號 '' 和雙引號 "" 區別

單引號對字符串的限制:

  • 單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  • 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符后也不行),但可成對出現,作為字符串拼接使用。
    解釋:單引號' '會讓shell忽略所有特殊字符,包括 $、\、
[root@localhost home]# echo ${var}      #輸出var變量
hello world !
[root@localhost home]# newvar='The date is `date` ${var}'    #定義變量newvar,使用單引號。
[root@localhost home]# echo ${newvar}
The date is `date` ${var}    #在單引號中特殊字符` `,${ }被忽略了。
[root@localhost home]# 

雙引號對字符串的限制:

  • 雙引號里可以有變量
  • 雙引號里可以出現轉義字符
    解釋:單引號' '會讓shell忽略所有特殊字符,包括 $、\、 。而雙引號則是忽略部分,不包括$、\、
[root@localhost home]# echo ${var}
hello world !
[root@localhost home]# newvar='The date is `date` ${var}'  
[root@localhost home]# echo ${newvar}
The date is `date` ${var}
[root@localhost home]# unset newvar    #刪除變量
[root@localhost home]# newvar="The date is `date` ${var}"  #定義變量newvar,使用雙引號。
[root@localhost home]# echo ${newvar}
The date is Mon May 24 19:59:49 PDT 2021 hello world !      #在雙引號中特殊字符` `,${ }沒有被忽略。
[root@localhost home]# 

 
 

反引號 ` ` 和單引號 '' 和雙引號 "" 區別

單引號 和 雙引號 是用來定義變量。而 反引號 則是用來命令替換的。
$()反引號 都是命令替換 功能符號,反引號 (`) 位於鍵盤的 Tab 鍵 的上方,1 鍵的左方。注意與單引號(')位於Enter鍵的左方的區別。
命令替換是指shell能夠將一個命令的 標准輸出 插在一個命令行中任何位置。

[root@localhost home]# echo the date is `date`  #shell會執行反引號中的 date 命令,把結果插入到 echo 命令中。
the date is Mon May 24 19:15:13 PDT 2021
[root@localhost home]# 

$() 和 反引號 區別:

  • $()的並不是所有的類unix系統都支持這種方式.
  • 反引號 所有的類unix系統都支持。
  • 多層次的復合替換中 $() 比 `` 更直觀,易理解。
    實例:
    將 cmd1 執行結果作為 cmd2 參數,再將 cmd2 結果作為 cmd3 的參數
cmd3 $(cmd2 $(cmd1))

如果是用反引號,直接引用是不行的,還需要作跳脫處理

cmd3 `cmd2 \`cmd1\``


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM