Closed hiroin closed 4 years ago
えっ これダメなんだ(・ _ ・;)
もはや何が正しい挙動なのかわからなくなってきた笑
あー、なるほど。 ルールはたぶん以下のとおりです。
シェル変数としてセットした場合は、シェル変数のみにセットする。 exportをつけて変数をセットした場合は、シェル変数にも環境変数にもセットする。 シェル変数をexportした場合は、それ以降、シェル変数も環境変数の値も同時に変更する。
ぐおー
要件追加後のテスト用シェルスクリプトの作成が時間的に可能でしたらいただきたいですm( )m
シェル変数にフラグを追加する必要があるか…ということですね。
echo $testenvを実行する場合 ・まず環境変数にtestenvがあるかを見に行く。あれば環境変数の$testenvを展開してecho。 ・なければ、シェル変数にtestenvがあるかを見に行く。あればシェル変数の$testenvを展開してecho。
testenv=100を実行する場合 ・環境変数にtestenvがあるかを見にいく。あれば変更。なければ何もしない。 ・シェル変数にtestenvがあるかを見にいく。あれば変更。なければシェル変数に登録。
な実装であればフラグはいらないです。 環境変数の方を先に参照すれば、いけると思います。
要件追加後のテスト用シェルスクリプトの作成が時間的に可能でしたらいただきたいです minishellに追加してもらった機能でいけるかも。やってみます。
試験コマンドは変数まわりは
008
export
- Export environment variables, create new ones and replace old ones
- 環境変数のエクスポート、新しい変数の作成、古い変数の置き換え
- Check them with env
- envで確認してください
[試験コマンド]
testenv1=TEST1
env | grep testenv1
export testenv1=TEST1
env | grep testenv1
testenv1=REPLACE_TEST1
env | grep testenv1
testenv1=
env | grep testenv1
export testenv2
env | grep testenv2
export testenv3=
env | grep testenv3
testenv2=TEST2
export testenv2
env | grep testenv2
testenv:=TEST
testenv1= pwd
010
Environment Variables
- Execute echo with some $ variables as arguments
- いくつかの $ 変数を引数として echo を実行します
- Check if double quotes around $ variables is working correctly (like in bash)
- 変数の周りの二重引用符が正しく動作しているか確認してください (bash のように)
[試験コマンド]
export testenv1=TEST1
env | grep testenv1
export testenv2=TEST2
env | grep testenv2
echo $testenv1
echo $testenv2
echo $testenv1$testenv2
echo $testenv1 $testenv2
echo "$testenv1"
echo "\$testenv1"
export testenv1=$testenv1:add
env | grep testenv1
testenv1=\$value
echo $testenv1
testenv1=$value
echo $testenv1
testenv1=TEST1
testenv1= pwd
echo $testenv1
です。
試験用スクリプトを作ろうとして、また動作相違を見つけてしまった… 一応、isuueたてておきます…
シェル変数に変更を加える(登録する)とき、環境変数にも探索をかけてKEY に該当するエントリーがあれば変更するという実装にしました。
実装してて気がついたんですが、
$ FFF=
$ set | grep FFF
$ FFF=
というように◯◯= だけでもシェル変数に登録されるようです
シェル変数も同じ動きなんですね。 課題、レビュー項目にsetがあれば、気がついたんですが…気づけなかったなあ…
修正を確認しました。
事案 [デグレ]シェル変数にセットしただけで、環境変数にもセットされてしまう
miishellのver
事案詳細 シェル変数にセットしただけで、環境変数にもセットされてしまう
[bash]
[minishell]
この試験パターンがなかったので、試験に以下の項目を追加しました。