Yoshiki-Iwasa / minishell

0 stars 0 forks source link

[対応要相談]bashは、変数設定時、=の後に空白があると、変数は無視され、空白以降をコマンドとして認識する #34

Closed hiroin closed 4 years ago

hiroin commented 4 years ago

事案 bashは、変数設定時、=の後に空白があると、変数は無視され、空白以降をコマンドとして認識する

miishellのver b7c97115eb72737ad38705c3a811e143ec850022

事案詳細

(1) bashは、変数設定時、=の後に空白があると、変数は無視され、空白以降をコマンドとして認識する。 (2) 変数になにか値が設定されていた場合は、その設定を保持する。

再現手順 [bash]

$ testenv1=a
$ echo testenv1
a
$ testenv1= pwd
/home/user42/42/minishell/minishell
$ echo $testenv1
a

[minishell]

minishell$ testenv1=a
minishell$ echo $testenv1
a
minishell$ testenv1= pwd
minishell$ echo $testenv1

所見 変数の設定の際は=の前後に空白が入ってはいけないことになっています。 bashは空白が入っていた場合に文法エラーにならずに空白以降をなぜかコマンドとして認識して実行します。 そして変数の設定はなかったことになるので、もともと設定されていた値は保持します。 コマンドとして認識して実行するのはさておき、=の後に空白が入っていた場合は、文法エラーなので、値を空文字にら設定するのではなく保持するのは妥当な動作かな…と思いました。

Yoshiki-Iwasa commented 4 years ago

修正しました

hiroin commented 4 years ago

すごい! 修正を確認しました。 難しいと思ったのですが、ソース見ていないから感覚掴めなかったです。