TR-42 / minishell

https://tr-42.github.io/minishell/
0 stars 0 forks source link

Redirectのファイル名に不正な変数が指定された際にエラーを吐くようにした #46

Closed TetsuOtter closed 1 year ago

TetsuOtter commented 1 year ago

redirectで、以下の場合にエラーを吐くようにしました (いずれについても、DQUOTEで囲った場合は対象外です)

tetsu@TRs-MacBook-Pro:~/ftgit/minishell% ./obj/test_build_cmd 'echo abc <<$B$C'  

argv[1]: 'echo abc <<$B$C'
  cmd[0] ~~~~~~~~~~~~~~~~~~
minishell: $B$C: ambiguous redirect
        !!! argv is NULL !!!
tetsu@TRs-MacBook-Pro:~/ftgit/minishell% ./obj/test_build_cmd 'echo abc <<B$C' 

argv[1]: 'echo abc <<B$C'
  cmd[0] ~~~~~~~~~~~~~~~~~~
        [ 0]: `echo`
        [ 1]: `abc`
tetsu@TRs-MacBook-Pro:~/ftgit/minishell% export ABC='abc def'
tetsu@TRs-MacBook-Pro:~/ftgit/minishell% ./obj/test_build_cmd 'echo abc <<"$B"$ABC'

argv[1]: 'echo abc <<"$B"$ABC'
  cmd[0] ~~~~~~~~~~~~~~~~~~
minishell: "$B"$ABC: ambiguous redirect
        !!! argv is NULL !!!
tetsu@TRs-MacBook-Pro:~/ftgit/minishell% ./obj/test_build_cmd 'echo abc <<"$B$ABC"'

argv[1]: 'echo abc <<"$B$ABC"'
  cmd[0] ~~~~~~~~~~~~~~~~~~
        [ 0]: `echo`
        [ 1]: `abc`

なお、上記の例いずれについてもheredocでテストしていますが、これはテスターがheredocを処理する前に実行したためです。 実際のminishellではheredoc部分ではエラーを吐かないです。

また、まだargv生成を親プロセス側に移動させていないため、minishell側ではエラーを吐きません。