では、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
答え2
新しいシェルを作成し、変数が存在するかどうかを照会できます。
$ bash -c '[[ -v VAR2 ]]' && echo variable is exported || echo variable is not exported
variable is exported
$ bash -c '[[ -v VAR1 ]]' && echo variable is exported || echo variable is not exported
variable is not exported