linux shell中'',""和``的區別

今天學習一個bash腳本,看到有一條:bin=`dirname "$0"`bash

(dirname filename是輸出該文件所在的目錄,$0是該bash文件的文件名,在bash中通常使用cd `dirname $0`進入該腳本所在的目錄中)學習

我嘗試着cat $binthis

輸出是:.spa

而後我將反引號``去掉:bin=dirname "$0"code

在運行cat $bin後報錯。blog

 

網上查了一些bash的單引號'',雙引號""和反引號``的區別。class

單引號''和雙引號""變量

二者都是解決變量中間有空格的問題。date

在bash中「空格」是一種很特殊的字符,好比在bash中這樣定義str=this is String,這樣就會報錯,爲了不出錯就得使用單引號''和雙引號""。file

單引號'',雙引號""的區別是單引號''剝奪了全部字符的特殊含義,單引號''內就變成了單純的字符。雙引號""則對於雙引號""內的參數替換($)和命令替換(``)是個例外。

好比說   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  2 03: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
相關文章
相關標籤/搜索