今天學習一個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"
原文:https://blog.csdn.net/lisulong1/article/details/79109296
