Closed hiroin closed 4 years ago
あー 中括弧で全体を囲うパターンは想定してませんでした。。。。。
神谷さんがコメントアウトした部分は、 echo "${USER}" みたいなパターンのときに必要です。
さらに、今わかったんですが、
bash-3.2$ echo {$TEST}
{}
bash-3.2$ TEST=ABC
bash-3.2$ echo {$TEST}
{ABC}
bash-3.2$
です。 なので、閉じカッコが不要だったのではなく、開カッコが必要でした
修正しました。
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$
bash-3.2$ TEST=ABC
bash-3.2$ echo "{$TEST}"
{ABC}
minishell$ TEST=ABC
minishell$ echo "{$TEST}"
{ABC
minishell$
これできてなかったのでやります
修正しました。
minishell$ echo "{$TEST}"
{ABCD}
minishell$ echo "{$TEST}${TEST}$TEST" {$TEST}${TEST}$TEST
{ABCD}ABCDABCD {ABCD}ABCDABCD
minishell$
なぜか上の例でBad quotation が出ますね... 再び修正します
修正しました 今度こそ大丈夫のはずです
修正を確認しました。
事案 中括弧で変数を囲った際に不要な閉じ括弧が表示される
事案詳細 [minishell]
コメント
dollor_value.c の void change_bracket_val(char *args, t_list d_val, t_list *e_val) の else if (arg[0] == '{') ブロックをコメントアウトしたら [minishell]
となるのですが…副作用があるかも…