linux shell中'',""和``的區別
阿新 • • 發佈:2019-01-09
`` :反引號,獲取執行命令的結果
列印日期:
echo `date` --》 輸出 2017年12月 8日 星期五 11時59分48秒 CST
'' : 去掉 所有符號的特殊含義。
"" : 不去掉符號的特殊含義。
例如
n=3 echo '$n' --> 輸出$n
n=3 echo '$n' --> 輸出 3
今天學習一個bash指令碼,看到有一條:bin=`dirname "$0"`
(dirname filename是輸出該檔案所在的目錄,$0是該bash檔案的檔名,在bash中一般使用cd `dirname $0`進入該指令碼所在的目錄中)
我嘗試著cat $bin
輸出是:.
然後我將反引號``去掉:bin=dirname "$0"
在執行cat $bin後報錯。
網上查了一些bash的單引號'',雙引號""和反引號``的區別。
單引號''和雙引號""
兩者都是解決變數中間有空格的問題。
在bash中“空格”是一種很特殊的字元,比如在bash中這樣定義str=this is String,這樣就會報錯,為了避免出錯就得使用單引號''和雙引號""。
單引號'',雙引號""的區別是單引號''剝奪了所有字元的特殊含義,單引號''內就變成了單純的字元。雙引號""則對於雙引號""內的引數替換($)和命令替換(``)是個例外。
比如說 n=3
echo '$n'
結果就是n3
改成雙引號 echo "$n",結果就是3
反引號``
反引號``是命令替換,命令替換是指Shell可以先執行``中的命令,將輸出結果暫時儲存,在適當的地方輸出。語法:`command`
下面的例子中,將命令執行結果儲存在變數中:
#!/bin/bash DATE=`date` echo "Date is $DATE" USERS=`who | wc -l` echo "Logged in user are $USERS" UP=`date ; uptime` echo "Uptime is $UP"
執行結果:
Date is Thu Jul 203:59:57 MST 2009 Logged in user are 1 Uptime is Thu Jul 2 03:59:57 MST 2009 03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15