无法意识到有什么问题: $ echo '`date`'

无法意识到有什么问题: $ echo '`date`'

执行以下命令时会发生什么?解释一下原因以及如何解决:

$ echo ‘`date`’

答案1

我猜你正在跑步

echo '`date`'

(注意直单引号)并期望看到date的输出。 shell 永远不会扩展单引号内的字符串;你应该使用双引号代替:

echo "`date`"

或者直接扔掉它们

echo `date`

这一切都相当于

date

不过,除了外壳分裂和通配符(正如指出的那样)斯蒂芬·查泽拉斯),默认情况下会折叠空白。

答案2

正如发布的,外引号是 Unicode U+2018 和 U+2019 字符。这些不是常规的单引号,对 shell 没有特殊含义,只是回显:

$ echo ‘`date`’
‘Fri Apr 7 19:55:15 EEST 2017’
$ 

这些引号内是用于 shell 命令替换的反引号。该date命令被执行,捕获的输出将替换该date字符串。

相关内容