echo ^`date`
^Wed Jan 21 05:49:37 CST 2015
deeps=`echo ^`date``
echo $deeps
实际结果:
^date
预期结果 :
^Wed Jan 21 05:49:37 CST 2015
需要这个帮助
echo ^`date`
^Wed Jan 21 05:49:37 CST 2015
deeps=`echo ^`date``
echo $deeps
实际结果:
^date
预期结果 :
^Wed Jan 21 05:49:37 CST 2015
需要这个帮助
试试这个方法
deeps=^$(date)
echo $deeps
输出:
^Wed Jan 21 18:44:25 IST 2015
反引号是可怕的过时,不应该被用于任何更多的 - 使用$(),而不是将节省你很多麻烦
使用反引号,或者使用命令替换 。 喜欢
# Shell command substitution.
echo ^$(date)
要么
# backticks.
deeps=`date`
echo ^$deeps
两个输出(所要求的)
^Wed Jan 21 08:16:01 EST 2015
很简单,因为没有其他的(正确的)答案其实解释我加入另一个答案的问题。
TL;博士比较了反引号的版本到了$()
版本
和...之间的不同
echo ^`date`
和
deeps=`echo ^`date``
是许多反引号是如何上线以及如何壳解析线。
echo ^`date`
有一个单一的对反引号的和壳解析它作为(其中[]
的线被标记“份”)
[echo] [^][`date`]
该
`date`
位,然后通过扩展命令替换等行成为
[echo] [^Wed Jan 21 05:49:37 CST 2015]
然后echo
吐出所需^Wed Jan 21 05:49:37 CST 2015
。
这条线但是
deeps=`echo ^`date``
被解析为
[deeps][=][`echo ^`][date][``]
你已经可以看到的是完全不同的,不正确的是(这是因为反引号不能嵌套备案)。
现在有在这条线两个命令替代echo ^
和空串,所以行变成
[deeps][=][^][date][]
或与该“单词”组合
[deeps][=][^date]
然后分配^date
到deeps
和echo $deeps
,然后让你^date
。
的$()
命令替换,没有另一方面的形式, 确实巢并因此
deeps=$(echo ^$(date))
作为解析
[deeps][=][$([echo] [^][$([date])])]
正确运行两个date
和echo
的结果。 虽然,在其他的答案表明,包装echo
是没有必要的deeps=^$(date)
会工作得很好本身。