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

来源:互联网 发布:剑灵灵男捏脸数据教学 编辑:程序博客网 时间:2024/05/17 07:19

在 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\` `
0 0
原创粉丝点击