bash:環境に特定の変数が存在することを確認しますか?

bash:環境に特定の変数が存在することを確認しますか?

では、bash与えられた変数が定義され、値が含まれているかどうかを確認する方法がいくつかあることがわかります。ところで、ローカル変数だけでなく、与えられた変数が環境に存在するかどうかを確認したいと思います。たとえば...

VAR1=value1 # local variable
export VAR2=value2 # environment variable
if [[ some_sort_of_test_for_env_var VAR1 ]]
then
  echo VAR1 is in the environment
else
  echo VAR1 is not in the environment
fi
if [[ some_sort_of_test_for_env_var VAR2 ]]
then
  echo VAR2 is in the environment
else
  echo VAR2 is not in the environment
fi

some_sort_of_test_for_env_var上記のbashコードが次の2行を印刷するように定義する方法は?

VAR1 is not in the environment 
VAR2 is in the environment

env私は変数名の操作を実行して実行するためにシェル関数を定義できることを知っていますが、与えられたgrep変数が環境にあるかどうかを確認するより直接的な「bashのような」方法があるかどうか疑問に思います。ローカル変数。

よろしくお願いします。

ベストアンサー1

タイトルと本文のフレーズは非常に異なります。

あなたのタイトルは不可能または意味がありません。 Bashのすべての環境変数はシェル変数でもあるため、環境変数は環境に「ただ」存在することはできません。

あなたの体のために

if declare -p VARNAME | grep -q '^declare .x'; then # it's in the environment
# or typeset if you prefer the older name

[[特に構文が必要な場合

if [[ $(declare -p VARNAME) == declare\ ?x* ]] # ditto

おすすめ記事