何が間違っているのか分かりません: $ echo '`date`'

何が間違っているのか分かりません: $ echo '`date`'

次のコマンドを実行すると何が起こりますか? その理由と修正方法を説明してください。

$ echo ‘`date`’

答え1

走っていると思います

echo '`date`'

(一重引用符に注意) の出力が表示されることを期待しますdate。シェルは一重引用符内の文字列を展開しません。代わりに二重引用符を使用する必要があります。

echo "`date`"

あるいは単に捨てるだけ

echo `date`

これらはすべて、

date

しかし、殻が割れたり塊になったりする現象を除けば(ステファン・シャゼラス) では、デフォルトで空白が折りたたまれます。

答え2

投稿されたとおり外側の引用符は Unicode U+2018 および U+2019 文字です。これらは通常の一重引用符ではなく、シェルに対して特別な意味を持たず、単にエコーされるだけです。

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

これらの引用符の内側には、シェル コマンドの置換のためのバッククォートがあります。dateコマンドが実行され、キャプチャされた出力がdate文字列を置き換えます。

関連情報