EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
有人问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样?这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题,但要解释这个问题确比较困难,我来换一个简单一点的例子,通俗的解释一下。 比如我们有一个shell脚本名为test.sh有一下两行
" a8 y8 `. A/ J8 e
7 ~# T( q g( X( q" K! C% j( w; E2 t) L2 H# Q6 _
1, r- q( i; [1 f9 U$ ~9 m/ t: Z
28 F' s+ \# N9 f' c2 b
| echo `echo \$HOSTNAME` //反引号; L6 ~$ w0 F$ X; _
echo $(echo \$HOSTNAME) //$()
, R* o' Y' T+ E) H$ ^; P
. C* E, [# y5 i4 `0 S* Z3 w/ D | 4 [' `1 ~$ y+ ~! k
我们可以使用sh -x test.sh来分析bash是如何来解释这个脚本的,返回的信息如下: 通过上图我们可以得出两个结论: 这说明反引号对反斜杠(\)有特殊的转化,至少我们看到当我们直接用1个\时,它本身并不会起到转义的作用。现在我们将脚本的内容做一些修改: 1" R/ `, }/ M9 _6 h9 j7 _: F+ R4 ?
2
: d% B) @; C. `: ? | echo `echo \\$HOSTNAME` //反引号
2 O1 w; r: H1 |3 C0 fecho $(echo \\$hostname) //$()
7 G' I$ ?9 Z7 K' l' C1 r
2 P0 t, ]# }- `6 }+ C: ?/ K+ E | ! T4 U/ i8 g6 x) w: }- x" A
) u- |- \, a, e6 g
# Q" ~+ B' J/ ?* M: X- ^
. }8 N, O2 P6 T6 C# ?) I O
|