![無法意識到有什麼問題: $ echo '`date`'](https://rvso.com/image/109235/%E7%84%A1%E6%B3%95%E6%84%8F%E8%AD%98%E5%88%B0%E6%9C%89%E4%BB%80%E9%BA%BC%E5%95%8F%E9%A1%8C%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
字串。