【linux】shell中命令替換$(cmd)和符號`cmd`


來源: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 都能使用.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM