來源:https://zhidao.baidu.com/question/485498670.html
作用:
$(cmd)和`cmd`的作用是相同的,在執行一條命令時,會先將其中的 ``,或者是$() 中的語句當作命令執行一遍,再將結果加入到原命令中重新執行,例如:
echo `ls`
會先執行 ls 得到xx.sh等,再替換原命令為:
echo xx.sh
最后執行結果為
xx.sh
例子:
date=`date -d '1 day ago' "+%Y-%m-%d"` echo $date #結果:2017-01-09
date=$(date -d '1 day ago' "+%Y-%m-%d") echo $date #結果:2017-01-09
或者在shell腳本中像下面這樣使用
for path in `find $HADOOP_HOME -name "*.jar"` do export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$path done
區別
1, 反引號很容易與單引號搞混亂,對初學者來說。有時在一些奇怪的字形顯示中,兩種符號是一模一樣的(直豎兩點)。用$()可以更好的避免這種混亂
2, 在多層次的復合替換中,反引號須要額外的跳脫( /` )處理,而 $( ) 則比較直觀。例如:
`com1`com2`` 你這么寫就是錯的。需要`com1/`com2/``如果有多個命令嵌套就比較復雜了。而用$()就比較直觀比如$(com1$(com2$(com3)))
如果是多個命令的話可以用;隔開。比如$ { var1=test1;var2=test2;echo $var1>a;echo $var2;}
不過,$( ) 並不是沒有斃端的...
反引號 基本上可用在全部的 unix shell 中使用,若寫成 shell script ,其移植性比較高。
而 $() 並不見的每一種 shell 都能使用.