Re: 問題ID:22156について
arashi1977
居住地: 広島
投稿数: 1715
引用:誤解がないように念のため。「$が変数DATEと認識」ではなく「$DATEが変数DATEと認識」です。
で
引用:うーんと、「変数DATEに格納されているのは"date"という文字列」であって「現在の日時を表すコマンドそのもの」や「コマンドの実行結果」ではないです。
この"date"をシェルがどう扱うかで動きが変わるんですね。
ご質問の問題では
・「echo "$DATE"」となっているので、シェルは「echo date」と解釈する。この場合実際に実行すると単にechoコマンドに「date」という文字列を渡すので、結果として「date」と出力することになります。
・kan1111さんの気にする【「現在の日時を表すコマンド」が認識され】るためにはバッククオートなりを使って「コマンドとして解釈」させる必要があります。
$が文字列でなく、「変数DATE」と認識されていたら
で
引用:
「変数DATE」に格納されている「現在の日時を表すコマンド」が認識され、「現在の日時」が表示されないのでしょうか?
この"date"をシェルがどう扱うかで動きが変わるんですね。
ご質問の問題では
・「echo "$DATE"」となっているので、シェルは「echo date」と解釈する。この場合実際に実行すると単にechoコマンドに「date」という文字列を渡すので、結果として「date」と出力することになります。
※シェルの動作をわかりやすくするために「set -x」やっときます。
$ set -x
# シェル変数DATEにdateという文字列を格納
$ DATE=date
+ DATE=date
# 設問のコマンド。dateとだけ理解しているので「echo date」と同じこと
$ echo "$DATE"
+ echo date
date
# 普通に「echo date」をやるとこう
$ echo date
+ echo date
date
・kan1111さんの気にする【「現在の日時を表すコマンド」が認識され】るためにはバッククオートなりを使って「コマンドとして解釈」させる必要があります。
$ echo `$DATE`
++ date ←「`$DATE`」を解釈してコマンドとして実行している
+ echo 2019年 $'6�\234\21018�\227�' $'�\201��\233\234�\227�' $'14�\231\20244�\210\20651�\222' JST
2019年 6月18日 火曜日 14時44分51秒 JST
$ echo $($DATE)
++ date ←上と同じこと
+ echo 2019年 $'6�\234\21018�\227�' $'�\201��\233\234�\227�' $'14�\231\20245�\210\20605�\222' JST
2019年 6月18日 火曜日 14時45分05秒 JST
投稿ツリー
-
問題ID:22156について
(kan1111, 2019-6-18 13:37)
- Re: 問題ID:22156について (arashi1977, 2019-6-18 14:47)
-
Re: 問題ID:22156について
(kan1111, 2019-6-18 15:36)
- Re: 問題ID:22156について (arashi1977, 2019-6-18 22:43)
-
Re: 問題ID:22156について
(kan1111, 2019-6-19 9:03)
- Re: 問題ID:22156について (arashi1977, 2019-6-19 9:48)
- Re: 問題ID:22156について (kan1111, 2019-6-19 10:30)