[解決済み] 環境変数のチェック
2023-03-01 09:06:30
質問
私は環境変数の値をチェックし、その値に応じて特定のことを行おうとしており、その変数が設定されている限りはうまくいきます。しかし、それが設定されていないとき、私は大量のエラーを得ます (BASH は私が指定した文字列を未定義の変数と比較しようとしているためだと思います)。
私はそれを防ぐために余分なチェックを実装しようとしましたが、うまくいきませんでした。私が使用しているコードのブロックは次のとおりです。
#!/bin/bash
if [ -n $TESTVAR ]
then
if [ $TESTVAR == "x" ]
then
echo "foo"
exit
elif [ $TESTVAR == "y" ]
then
echo "bar"
exit
else
echo "baz"
exit
fi
else
echo -e "TESTVAR not set\n"
fi
そして、これが出力です。
$ export TESTVAR=x
$ ./testenv.sh
foo
$ export TESTVAR=y
$ ./testenv.sh
bar
$ export TESTVAR=q
$ ./testenv.sh
baz
$ unset TESTVAR
$ ./testenv.sh
./testenv.sh: line 5: [: ==: unary operator expected
./testenv.sh: line 9: [: ==: unary operator expected
baz
質問なのですが、「unset TESTVAR」は無効化しないのでしょうか?そうではないような気がするのですが・・・。
どのように解決するのですか?
変数をダブルクォートで囲む。
if [ "$TESTVAR" == "foo" ]
とすると、変数が空の場合、テストは次のように展開されます。
if [ "" == "foo" ]
に展開されるのに対し、引用しない場合は
if [ == "foo" ]
となっていますが、これは構文エラーです。
関連
-
[解決済み] mkdirのオプションが明確でない
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] Bashで変数で定義された数値の範囲を反復処理するにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] キーと値のペアのファイルから環境変数を設定する
-
[解決済み] Bashでコマンドの前に環境変数を設定すると、パイプ内の2番目のコマンドで動作しない
-
[解決済み】bashで1つのコマンドでシェル変数にデフォルト値を割り当てる。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
deepin20のファイルを共有する方法を教えてください。Windowsでdeepinファイルを共有するためのヒント
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Linux 5.10.10 正式版リリース:NULLポインタの不具合修正など。
-
makeの低レベルエラー:セパレータストップがない
-
リクエスト・エンティティが大きすぎる問題の解決策
-
[解決済み] CPAN.pmが@INCに見つからない(@INCには含まれています。/usr/local/lib/perl5 /usr/local/share/perl5。
-
[解決済み] ディレクトリInodeと通常ファイルInodeの比較
-
[解決済み] 標準エラー出力を /dev/null にリダイレクトする。
-
[解決済み] ディレクトリへのシンボリックリンクを削除する
-
[解決済み] POSIX」の意味を教えてください。