![无法意识到有什么问题: $ echo '`date`'](https://linux22.com/image/109235/%E6%97%A0%E6%B3%95%E6%84%8F%E8%AF%86%E5%88%B0%E6%9C%89%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98%EF%BC%9A%20%24%20echo%20'%60date%60'.png)
执行以下命令时会发生什么?解释一下原因以及如何解决:
$ 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
字符串。