에서는 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 코드가 다음 두 줄을 인쇄하도록 정의하는 방법은 무엇입니까 ?
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