TR-42 / minishell

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

heredocの実装 #12

Closed TetsuOtter closed 1 year ago

TetsuOtter commented 1 year ago

テスト変数/ファイル

bash-3.2$ echo $USER
tetsu
bash-3.2$ cat a
anc

通常のユースケース

bash-3.2$ cat <<abc a
> abcdef
> abc
anc
bash-3.2$ cat <<abc - a
> abcdef
> abc
abcdef
anc

$を使用する場合

変数展開はされず、$も含めてterminatorになる

bash-3.2$ cat <<$USER - a
> abcdef
> tetsu
> USER
> $USER
abcdef
tetsu
USER
anc
bash-3.2$ cat <<abc$USER - a
> abcdef
> abc
> $USER
> abc$USER
abcdef
abc
tetsu
anc

$"がある場合

シングル/ダブルクォーテーションは除かれる

bash-3.2$ cat <<"abc""$USER" - a
> abc
> "abc""$USER"
> abc$USER
abc
"abc""$USER"
anc
TetsuOtter commented 1 year ago

heredoc中はhistoryが効くらしい。そこまで再現する? 面倒なので、そこまではしなくて良い気もするけど…