EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
有人问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样?这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题,但要解释这个问题确比较困难,我来换一个简单一点的例子,通俗的解释一下。 比如我们有一个shell脚本名为test.sh有一下两行
( \5 q) H% T9 B$ @7 k# i. x
. l# F8 R9 ?5 d6 W2 p( n; J7 y: f# E# K& L
1( c3 F4 C" I6 V; [6 F
2
7 p% M+ J$ r1 v7 A, v | echo `echo \$HOSTNAME` //反引号
0 U$ d; y6 I; G* J$ ^& `! v6 oecho $(echo \$HOSTNAME) //$()
! D; A! m) f2 `$ \/ ?: H3 S5 T" A# W3 z! D+ F
|
; u7 t0 C1 H/ O 我们可以使用sh -x test.sh来分析bash是如何来解释这个脚本的,返回的信息如下: 通过上图我们可以得出两个结论: 这说明反引号对反斜杠(\)有特殊的转化,至少我们看到当我们直接用1个\时,它本身并不会起到转义的作用。现在我们将脚本的内容做一些修改: 1
s% o- n; f8 x2
. c% G, z4 _6 t, a0 g7 m5 a9 ~) l | echo `echo \\$HOSTNAME` //反引号/ \: d$ C; y8 }7 b! Z* K
echo $(echo \\$hostname) //$()
9 c2 ~' y+ \! A) ^
' o) v% V/ N2 S8 c' r4 r |
5 e3 U4 S& C' {( ]( R% l" m& B2 z) g
% c/ W. h/ p9 k- W# H6 N/ b( V% i0 |+ c7 q. r$ {& y; Y J. f
- r# X* G0 L: w; Q/ |" v/ q
|