설정된 변수를 한 번에 내보내는 방법? 지역 변수를 표시합니다. 이러한 변수를 한 번에

set명령은 아래와 같이 모든 지역 변수를 표시합니다. 이러한 변수를 한 번에 모두 내보내려면 어떻게합니까?

>set
a=123
b="asd asd"
c="hello world"


답변

변수를 설정하기 전에 다음 명령을 실행하십시오.

set -a 

매뉴얼 페이지 :

-a
이 옵션이 켜져 있으면, 할당이 수행되는 각 변수에 대해 내보내기 속성이 설정됩니다.

이 옵션을 끄려면 set +a나중에 실행하십시오 .

예:

set -a
. ./environment
set +a

어디에 environment포함 :

FOO=BAR
BAS='quote when using spaces'

답변

`echo "export" $((set -o posix ; set)|awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}')`
  1. 먼저 모든 설정된 환경 변수를 가져옵니다. (set -o posix ; set)
    참조 : https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-definedly-environment-variables-in-a- 리눅스 바

  2. 모든 환경 변수 이름 얻기 공간으로 구분 : awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}'
    참조 : 새로운 라인 추가 콤마없는 AWK-인쇄 열 값
    https://stackoverflow.com/questions/14212993/regular-expression-to-match-a-pattern-inside- awk- 명령

  3. 이제 이러한 변수를 내 보내야하지만 xargs는 자식 프로세스를 분기하고 내보내기는 현재 프로세스에서 실행해야하므로이를 수행 할 수 없습니다. echo "export" ...원하는 명령을 작성한 다음“를 사용하여 실행하십시오. 그게 다야 : p.


답변

당신은 앞에 추가 할 수 있습니다 export통해 변수의 이름 awkeval결과 출력 :

eval $(printenv | awk -F= '{ print "export " $1 }')

답변

쉘이 bash 인 경우 작동합니다 (다른 쉘도 가능)

export > /my/env/var/file

새 파일에는 현재 정의 된 모든 변수의 덤프가 포함됩니다 …

declare -x PORT="9000"
declare -x PORT_ADMIN="3001"
declare -x PORT_DOCKER_REGISTRY="5000"
declare -x PORT_ENDUSER="3000"
declare -x PRE_BUILD_DIR="/cryptdata6/var/log/tmp/khufu01/loud_deploy/curr/loud-build/hygge"
declare -x PROJECT_ID="hygge"
declare -x PROJECT_ID_BUSHIDO="bushido"

그런 다음 모든 환경 변수 문제로 현재 쉘을 연결합니다.

source  /my/env/var/file

답변