Yoshiki-Iwasa / minishell

0 stars 0 forks source link

中括弧で変数を囲った際に不要な閉じ括弧が表示される #62

Closed hiroin closed 4 years ago

hiroin commented 4 years ago

事案 中括弧で変数を囲った際に不要な閉じ括弧が表示される

事案詳細 [minishell]

minishell$ testenv3=TEST
minishell$ echo {$testenv3}
TEST}
    ↑

コメント

dollor_value.c の void change_bracket_val(char *args, t_list d_val, t_list *e_val) の else if (arg[0] == '{') ブロックをコメントアウトしたら [minishell]

minishell$ testenv3=TEST
minishell$ echo {$testenv3}
TEST

となるのですが…副作用があるかも…

Yoshiki-Iwasa commented 4 years ago

あー 中括弧で全体を囲うパターンは想定してませんでした。。。。。

神谷さんがコメントアウトした部分は、 echo "${USER}" みたいなパターンのときに必要です。

さらに、今わかったんですが、

bash-3.2$ echo {$TEST}
{}
bash-3.2$ TEST=ABC
bash-3.2$ echo {$TEST}
{ABC}
bash-3.2$ 

です。 なので、閉じカッコが不要だったのではなく、開カッコが必要でした

Yoshiki-Iwasa commented 4 years ago

修正しました。

void    change_bracket_val(char **args, t_list *d_val, t_list *e_val)

else if (arg[0] == '{') -> else if (arg[0] == '{' && arg[1] != '\0') に変えました。 これで、開かっこが消されなくなりました。

これで以下のパターンには対応できました。

minishell$ TEST=ABCD
minishell$ echo {$TEST}
{ABCD}
minishell$ echo test{$TEST}test
test{ABCD}test
minishell$ echo test{INVALID}test
test{INVALID}test
minishell$ echo {}
{}
minishell$ echo ${TEST}{$TEST}$TEST
ABCD{ABCD}ABCD
minishell$ echo $TEST{$TEST}${TEST}
ABCD{ABCD}ABCD
minishell$ 
Yoshiki-Iwasa commented 4 years ago
bash-3.2$ TEST=ABC
bash-3.2$ echo "{$TEST}"
{ABC}

minishell$ TEST=ABC
minishell$ echo "{$TEST}"
{ABC
minishell$ 

これできてなかったのでやります

Yoshiki-Iwasa commented 4 years ago

修正しました。

minishell$ echo "{$TEST}"
{ABCD}
minishell$ echo "{$TEST}${TEST}$TEST" {$TEST}${TEST}$TEST
{ABCD}ABCDABCD {ABCD}ABCDABCD
minishell$ 
Yoshiki-Iwasa commented 4 years ago

なぜか上の例でBad quotation が出ますね... 再び修正します

Yoshiki-Iwasa commented 4 years ago

修正しました 今度こそ大丈夫のはずです

hiroin commented 4 years ago

修正を確認しました。