EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
有人问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样?这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题,但要解释这个问题确比较困难,我来换一个简单一点的例子,通俗的解释一下。 比如我们有一个shell脚本名为test.sh有一下两行
8 y; j0 W6 h7 i& i) t3 s: g9 l/ R- w) ?; z8 k* `* @. s
6 P6 L! B n# i0 [- c9 g
1
# F c |* m6 }6 M8 v2 v2! b( } N/ r+ ?# L* T! x: Y* u
| echo `echo \$HOSTNAME` //反引号
0 E- q* U- v" r3 I6 P4 \: [' Wecho $(echo \$HOSTNAME) //$()2 x% B) S Z/ f1 S- W
( @/ F0 Y1 `9 V- v1 d/ I( d* C) V( H
|
* K" n: t) q, T 我们可以使用sh -x test.sh来分析bash是如何来解释这个脚本的,返回的信息如下: 通过上图我们可以得出两个结论: 这说明反引号对反斜杠(\)有特殊的转化,至少我们看到当我们直接用1个\时,它本身并不会起到转义的作用。现在我们将脚本的内容做一些修改: 1
2 `' ]! P: d+ G2
1 v0 B* d1 [6 Y | echo `echo \\$HOSTNAME` //反引号
$ O& B% y! b5 O6 _7 ?echo $(echo \\$hostname) //$()7 U! R) _9 w9 ?
( {; V9 W( X* X8 m |
; x( D! v& m. C2 o: `, l
2 ^- r! V$ a. Z7 @- |# |$ l0 `5 y) m4 O) I% q! C8 _0 d5 v! D
6 w. U: s! J* P2 S: a% b a
|