[解決済み] unset の使用と変数への空の設定
2022-05-16 10:06:42
質問
私は現在bashのテストフレームワークを書いています。テスト関数の中で、両方の標準的なbashのテスト(
[[
) だけでなく、定義済みのマッチャーも使用することができます。マッチャーは '[[' のラッパーで、リターンコードを返す以外に、何が期待されたかを示す何らかの意味のあるメッセージを設定します。
例
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
そのため、マッチャーを使用して失敗した場合のみ、error_messageが設定されます。
さて、後のある時点で、テストが成功したかどうかをテストしています。成功した場合は緑で、失敗した場合は赤で期待値を表示します。
さらに、error_messageが設定されているかもしれないので、メッセージが存在するかどうかをテストし、それを表示し、それから設定を解除します(次のテストでは、error_messageが設定されないかもしれないので)。
error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
そこで質問なのですが、この変数を解除するのが良いのか、それとも、次のように''に設定するのが良いのでしょうか?
error_message=''
どちらが良いのでしょうか?実際に違いがあるのでしょうか?それとも、メッセージが設定されたことを示す追加のフラグを用意した方がいいのでしょうか?
どのように解決するのですか?
を使用していない限り、ほとんどの場合、違いは見られません。
set -u
:
/home/user1> var=""
/home/user1> echo $var
/home/user1> set -u
/home/user1> echo $var
/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable
というわけで、実際には、変数をどのようにテストするかによります。
セットされているかどうかをテストするための私の好ましい方法は、次の通りであることを付け加えます。
[[ -n $var ]] # True if the length of $var is non-zero
または
[[ -z $var ]] # True if zero length
関連
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptで変数が存在するか(定義されているか/初期化されているか)をチェックする
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] JavaScriptで変数が配列であるかどうかを確認する方法は?
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] 変数が存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] エクスポートあり/なしの変数の定義
-
[解決済み] 複数行の出力をBash変数に取り込む
-
[解決済み] Bashはどのように異なるディレクトリコンテキストでコマンドを実行できますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] bash で "set -o nounset" を使用したときに変数が設定されているかどうかをテストする。
-
[解決済み] bashでalt + numericを押すと(arg [numeric])と出ますが、これは何でしょう?
-
[解決済み] find "の結果をカウントするのに最適な方法は何ですか?
-
[解決済み] Bashはどのように異なるディレクトリコンテキストでコマンドを実行できますか?
-
[解決済み] bashで端末の最終行を削除して置換するには?
-
[解決済み] Docker: 実行中のDockerコンテナの停止と削除
-
[解決済み] unset の使用と変数への空の設定
-
[解決済み] homebrew パッケージがインストールされているかどうかを検出する
-
[解決済み] bash で文字列をエスケープするコマンド
-
[解決済み] MSYSでフォルダを閲覧する