1. 程式人生 > 實用技巧 >shell-基礎

shell-基礎

一、單引號與雙引號

#!/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

總結

單引號:所見即所得,即將單引號內的內容原樣輸出,任何字元都只會當成普通字元,除了單引號本身。

雙引號:把雙引號內的內容輸出出來,如果內容中有命令,變數等,會先把變數,命令解析出結果,然後再輸出最終內容來。

無引號:把內容輸出出來,但可能不會將含有空格的字串視為一個整體輸出,如果內容中有命令,變數等,會先把變數,命令解析結果,然後再輸出最終內容來,如果字串中帶有空格等特殊字元,則不能完整的輸出,需要改加雙引號,一般連續的字串,數字,路徑等可以用,不過最好用雙引號替代之。