shell中的單引號和雙引號的區別


對於常規的字符串定義變量值應添加雙引號,並且等號后不能 有空格,需要強引用的,則需要單引號,需要命令引用的使用反引號。

 

單引號:所見即所得,即輸出時會將單引號內的所有內容都原樣輸出,或者描述為單引號里面看到的什么就輸出什么,這成為強引用。

雙引號:輸出雙引號的所有內容;如果內容中有命令(要反引)、變量、特殊轉義,會先把變量、命令、轉義字符解析出結果,然后在輸出最終內容,這稱為弱引。

反引號:一般用於命令,執行的時候命令會被執行,相當於$(),賦值和輸出都要用反引號引起來。

[root@localhost ~]# time=date
[root@localhost ~]# echo $time
date
[root@localhost ~]# time=`date`
[root@localhost ~]# echo $time
2019年 08月 01日 星期四 08:14:11 CST
[root@localhost ~]# time="`date`"
[root@localhost ~]# echo $time
2019年 08月 01日 星期四 08:21:15 CST
[root@localhost ~]# time='`date`'
[root@localhost ~]# echo $time
`date`
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo `$PATH`
-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin: 沒有那個文件或目錄

[root@localhost ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo '$PATH'
$PATH
[root@localhost ~]# time="現在是北京時間:`date`"
[root@localhost ~]# echo $time
現在是北京時間:2019年 08月 01日 星期四 08:24:25 CST
[root@localhost ~]# time='現在是北京時間:`date`'
[root@localhost ~]# echo $time
現在是北京時間:`date`
[root@localhost ~]# time="現在是北京時間:\b`date`"
[root@localhost ~]# echo $time
現在是北京時間:\b2019年 08月 01日 星期四 08:25:19 CST
[root@localhost ~]# time='現在是北京時間:`date`'
[root@localhost ~]# echo $time
現在是北京時間:`date`
其實在shell中 echo的參數e能夠解析轉義字符,在單引或者雙引的情況下都能夠解析。
-e 啟用下列反斜杠轉義的解釋

[root@localhost ~]# time="我們都是\n好孩子" [root@localhost ~]# echo -e $time 我們都是 好孩子 [root@localhost ~]# time='我們都是\n好孩子' [root@localhost ~]# echo -e $time 我們都是 好孩子

不用“”在shell解釋器中能否轉義,需要進一步驗證,建議代碼中使用“”定義轉義符。


免責聲明!

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



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