
次のコマンドを実行すると何が起こりますか? その理由と修正方法を説明してください。
$ 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
文字列を置き換えます。