EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
有人问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样?这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题,但要解释这个问题确比较困难,我来换一个简单一点的例子,通俗的解释一下。 比如我们有一个shell脚本名为test.sh有一下两行 / {1 w! V: o) }# y* T( S4 s
; J) P/ X! E0 Y4 }/ r6 I
) H4 G9 {: [/ O7 r/ O' d
1) @* s& T1 E+ X: O3 ^# X
2
3 k5 y/ |0 g8 O5 R | echo `echo \$HOSTNAME` //反引号
. W5 F) S5 \9 {& H! u9 G8 ~/ \echo $(echo \$HOSTNAME) //$()
, f' Z, C( F$ \5 ^, P: ?# G; D$ O& l
| 5 S3 C- H5 \* o
我们可以使用sh -x test.sh来分析bash是如何来解释这个脚本的,返回的信息如下: 通过上图我们可以得出两个结论: 这说明反引号对反斜杠(\)有特殊的转化,至少我们看到当我们直接用1个\时,它本身并不会起到转义的作用。现在我们将脚本的内容做一些修改: 1
`. m! Y' j8 o2& S+ \2 q7 t, u* B4 h
| echo `echo \\$HOSTNAME` //反引号- Y9 u8 L! `7 I) Z$ v. V
echo $(echo \\$hostname) //$()
0 R( n( K9 t# H: H( J F
$ h" ], x& C- L4 G, |* q$ h' H" k& n | 1 V( J) X5 @; z h1 D* j
' Z6 U1 p( Y- R1 s3 ?! s: s% P1 M# Z+ m, u
! X" N K" \+ V& x4 V
|