shell-基礎
阿新 • • 發佈:2020-10-23
一、單引號與雙引號
#!/bin/bash
url="http://c.biancheng.net"
website1='C語言中文網:${url}'
website2="C語言中文網:${url}"
echo $website1
echo $website2
執行結果:
C語言中文網:${url}
C語言中文網:http://c.biancheng.net
總結
單引號' '包圍變數的值時,單引號裡面是什麼就輸出什麼,即使內容中有變數和命令(命令需要反引起來)也會把它們原樣輸出。
雙引號" "包圍變數的值時,輸出時會先解析裡面的變數和命令,而不是把雙引號中的變數名和命令原樣輸出。
二、反引號(``)
# echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
# echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script.
總結
shell能夠將一個命令的標準輸出插在一個命令列中任何位置
shell中有兩種方法作命令替換:把shell命令用反引號/或者$(...)結構括起來,其中$(...)格式受到POSIX標準支援,也利於巢狀。
三、加不加分號的區別
#單行語句一般要用到分號來區分程式碼塊,例如 if [ "$PS1" ]; then echo test is ok; fi test is ok /#該程式碼若寫作多行,用換行符來區分程式碼塊,則無需用到分號 if [ "PS1" ] then echo "test is ok" fi
四、shell中echo單引號,雙引號,不加引號的區別
https://www.cnblogs.com/dazhuwang/p/13203248.html
#宣告變數 VAR01 並用echo打印出來,第一次直接列印,第二次用雙引號括起來,從內容看好像沒什麼區別 [root@localhost ~]# VAR01=100 [root@localhost ~]# echo $VAR01 100 [root@localhost ~]# echo "$VAR01" 100 #宣告變數 VAR02 內容為字串,ABC 之間有多個空格 [root@localhost ~]# VAR02="A B C" #直接列印變數時,輸出內容只保留了每個字幕間一個空格 [root@localhost ~]# echo $VAR02 A B C #使用雙引號括起的輸出內容和變數定義時的內容是完全一致的 [root@localhost ~]# echo "$VAR02" A B C
總結
單引號:所見即所得,即將單引號內的內容原樣輸出,任何字元都只會當成普通字元,除了單引號本身。
雙引號:把雙引號內的內容輸出出來,如果內容中有命令,變數等,會先把變數,命令解析出結果,然後再輸出最終內容來。
無引號:把內容輸出出來,但可能不會將含有空格的字串視為一個整體輸出,如果內容中有命令,變數等,會先把變數,命令解析結果,然後再輸出最終內容來,如果字串中帶有空格等特殊字元,則不能完整的輸出,需要改加雙引號,一般連續的字串,數字,路徑等可以用,不過最好用雙引號替代之。