Closed ak0327 closed 1 year ago
この辺りはできた
# 初期値
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="/home/user42/42vm/minishell/42_minishell"
# 既存の属性を維持したままvalue変更
minishell declare PWD=aaaa
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="aaaa"
# keyがなく、属性を指定しない場合はシェル変数として追加
minishell unset PWD
minishell declare PWD=aaaa
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -- PWD="aaaa"
# keyがなく、属性を-xで指定した場合は環境変数として追加
minishell unset PWD
minishell declare -x PWD=aaaaaaa
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="aaaaaaa"
あとはこれだけ -> varのvalueをt_var_infoに変更したため、key only, value=NULL( t_var_info = NULL)の条件が消滅しているっぽい...? exportもばぐってる
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="/home/user42/42vm/minishell/42_minishell"
minishell declare -x PWD
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD # <- value=NULLになる
# bashは属性を変更するだけ
bash$ unset PWD
bash$ PWD=aaaaaa
bash$ declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -- PWD="aaaaaa"
bash$ declare -x PWD
bash$ declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="aaaaaa"
できた add, joinする前にkeyがあってchar *value=NULLの場合、既存のvalueを取得するようにした var_add, var_joinでif (!value); return ;などが不要となり、分岐がシンプルになりそう
# 初期値
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="/home/user42/42vm/minishell/42_minishell"
# PWDの属性を変更 -x -> --
minishell declare +x PWD
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -- PWD="/home/user42/42vm/minishell/42_minishell"
# PWDの属性を変更 -- -> -x by export
minishell export PWD
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="/home/user42/42vm/minishell/42_minishell"
# PWDの属性を変更 -- -> -x by declare
minishell unset PWD
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
minishell declare PWD=aaa
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -- PWD="aaa"
minishell declare -x PWD
minishell declare -p | /bin/grep PWD
declare -x OLDPWD="/home/user42/42vm/minishell/42_minishell"
declare -x PWD="aaa
declareのupdate
cd後のPWD, OLDPWDの更新のため、declare_arg() に 引数attrを渡してみたところ ft_declareが属性変更、変数登録などできそうだったのでupdate
bool is_display_attr
を追加(declare -pでtrue, export-p
optionを解釈し、declare -x
の表示有無を決める-p
なしの場合にはkey=value表記となる("
なし) e06e2a9+x
: 環境変数からシェル変数へ変更(hashにkeyがなければ新規追加)-x
: シェル変数から環境変数へ変更(hashにkeyがなければ新規追加)-x
も+x
もない場合、keyがあれば既存のvalueをupdate, なければシェル変数としてaddkey=value
,key+=value
などを解釈ft_export周りのfix
残課題
&
で解決できそう (get_declare_atre()
)***
があってローカルではテスト通るがちゃんと actions でテストされてるか不明 → #192Issue #186