命令替换 bash shell中$()与``的区别

在 bash shell 中,$( )与` ` (反引号) 都是用来做命令替换用(command substitution)的。
所谓的命令替换与变量替换差不多,都是用來重组命令行:完成引号里的命令行,然后将其结果替换出來,再重组命令行。
例如:

$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)

如此便可方便得到上一星期天的日期了... ^_^
在多层次的复合替换中,` ` 需要额外的跳脱( \` )处理,而 $( ) 则比较直观。例如:
这是错的:

command1 `command2 `command3` `

原本的意图是要在 command2 `command3` 先将 command3 替换出來給 command2处理,
然后再将结果传给 command1 `command2 ...` 来处理。
然而,真正的结果在命令行中却是分成了 `command2 ` 与 `` 两段。

例如:echo `echo `echo test``的显示结果是"echo test",并不是我们需要的test;而echo $(echo $(echo test))的结果是我们需要的test

如果要使用反引号` `得到显示结果test,则正确的输入应该如下:

command1 `command2 \`command3\` `
即 echo ` echo \`echo test\` `
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值