Re: 問題ID:22156について

この質問の投稿一覧へ

なし Re: 問題ID:22156について

msg# 1.2.1
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2019-6-18 22:43
arashi1977  長老 居住地: 広島  投稿数: 1715
ちょっと深読みというか、補完し過ぎな感じがします。順を追って。

引用:
変数DATEに格納されているのは"date"という文字列
という点は理解していますが、
ここはOKですね。

引用:
問題文通りdate=現在の日時を表示するコマンドという前提の下であれば、dateが表示される=現在の日時が引き出される、ではないのでしょうか?
ここ!
「date=現在の日時を表示するコマンド」をどう理解するか、というところでずれている気がします。

例えば。
「変数CALにcalという文字列を格納した」だけあって、「echo `$CAL`の実行結果は?」って聞かれたときにどういう結果が出るかぱっとわかりますか?

ご存知ならいいのですが、「cal」ってカレンダーを表示してくれるコマンドなんです。
$ cal
      6月 2019
日 月 火 水 木 金 土
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
でもそれを知らない人がこの問題見ても「バッククオートだからcalというコマンドが実行されるはず」「でもcalってコマンドは何するコマンド?」「そもそもcalってコマンドあるの?」って疑問に思うかもしれません。そういった事にならないように補足として「(カレンダーを表示するコマンド)」とあったら問題ないですよね?

【「date」という文字列(現在の日時を表示するコマンド)】という記述は、上述したのと同じように「dateってコマンドあるの?」とか言う疑問を持たせないための補足なんじゃないかと思います。
※引掛けってほどでもないですが、「現在の日時を表示するコマンド名と同じ文字列」と理解すればそんな大きくずれてないかな?

引用:
例えば、問題ID:22157の回答は【現在の日時】となっており、【$DATE=date=現在の日時】という風になっているかと思います。メタキャラクタが違うことは承知していますが、前提条件【$DATE=date=現在の日時】が同じなのであれば【date=現在の日時】にはならないのでしょうか?
問題ID:22157はバッククオートに関する問題ですので、前の私の投稿にもある通り「受け取ったものをコマンドとして実行」するのが正しいです。なので「【$DATE=date=現在の日時】」ではなく「`$DATE`=【シェル上でのdateコマンド実行結果】=現在の日時」となっているだけで、「$DATE=【シェル上でのdateコマンド実行結果】」ではありません。
この時点で「前提条件」と想定されている部分は根本的に間違っている、ということになります。

dateでやるから混乱するのかもしれませんね。例えば以下のように存在しないコマンドを使ったらピンとくるかもしれません。
$ myname
-bash: myname: command not found ←mynameなんてコマンドはない
$ DATE=myname ←変数DATEにmynameを格納した
$ set | grep DATE
DATE=myname ←変数DATEにはmynameという文字列が格納されている
$ echo "$DATE"
myname ←問題ID:22156のとおり、格納されている文字列が出力されている
$ echo `$DATE` ←バッククオートで囲った場合
-bash: myname: command not found ←mynameというコマンドを実行しようとしてエラーになっている
←この空行はechoコマンドの実行結果(何も表示されなかった)

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.