执行以下命令时会发生什么?解释一下原因以及如何解决:
$ 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
字符串。