想要将命令 echo ^`date` 的结果分配给一个变量。但是当我尝试这样做时,我没有得到例外的结果
Want to assign the result of the command echo ^`date` to a variable. but when i am trying to do i am not getting the excepted result
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
反引号已经过时了,不应该再使用了——使用 $() 可以让您省去很多麻烦
使用反引号,或使用 Command substitution。喜欢
# Shell command substitution.
echo ^$(date)
或
# backticks.
deeps=`date`
echo ^$deeps
两者输出(请求的)
^Wed Jan 21 08:16:01 EST 2015
仅仅是因为其他(正确)答案都没有真正解释问题,所以我添加了另一个答案。
tl;dr 比较 the backtick version to the $()
version
两者的区别
echo ^`date`
和
deeps=`echo ^`date``
是行中有多少个反引号以及 shell 是如何解析行的。
echo ^`date`
有一对反引号,shell 将其解析为([]
标记行的 "parts")
[echo] [^][`date`]
`date`
bit 然后通过 Command Substitution 展开,因此该行变为
[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][]
或与"words"合并
[deeps][=][^date]
然后将 ^date
分配给 deeps
和 echo $deeps
然后让你 ^date
.
命令替换的 $()
形式,不,另一方面,确实嵌套,因此
deeps=$(echo ^$(date))
解析为
[deeps][=][$([echo] [^][$([date])])]
对结果正确运行 date
和 echo
。虽然,如其他答案所示,包装 echo
不是必需的,因为 deeps=^$(date)
本身就可以正常工作。
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
反引号已经过时了,不应该再使用了——使用 $() 可以让您省去很多麻烦
使用反引号,或使用 Command substitution。喜欢
# Shell command substitution.
echo ^$(date)
或
# backticks.
deeps=`date`
echo ^$deeps
两者输出(请求的)
^Wed Jan 21 08:16:01 EST 2015
仅仅是因为其他(正确)答案都没有真正解释问题,所以我添加了另一个答案。
tl;dr 比较 the backtick version to the $()
version
两者的区别
echo ^`date`
和
deeps=`echo ^`date``
是行中有多少个反引号以及 shell 是如何解析行的。
echo ^`date`
有一对反引号,shell 将其解析为([]
标记行的 "parts")
[echo] [^][`date`]
`date`
bit 然后通过 Command Substitution 展开,因此该行变为
[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][]
或与"words"合并
[deeps][=][^date]
然后将 ^date
分配给 deeps
和 echo $deeps
然后让你 ^date
.
命令替换的 $()
形式,不,另一方面,确实嵌套,因此
deeps=$(echo ^$(date))
解析为
[deeps][=][$([echo] [^][$([date])])]
对结果正确运行 date
和 echo
。虽然,如其他答案所示,包装 echo
不是必需的,因为 deeps=^$(date)
本身就可以正常工作。