set
명령은 아래와 같은 모든 지역 변수를 표시합니다. 이러한 변수를 한꺼번에 내보내려면 어떻게해야합니까?
>set a=123 b="asd asd" c="hello world"
댓글
Answer
변수를 설정하기 전에 다음 명령을 실행합니다.
set -a
man 페이지 :
-a
이 옵션이 켜져 있으면 내보내기 속성이 각각에 대해 설정됩니다. 할당이 수행되는 변수;
이 옵션을 끄려면 나중에 set +a
를 실행합니다.
예 :
set -a . ./environment set +a
environment
에는 다음이 포함됩니다.
FOO=BAR BAS="quote when using spaces"
코멘트
- 하지만 변수에 할당하기 전에 활성화해야합니다. ' 이전에 할당 된 변수에 대해 아무것도 수행하지 않습니다.
- @chepner, 언급하는 것을 잊었습니다 !!
- 이것은 또한 자동으로
function example(){ echo good; }; export -f example
Answer
와 같은 방식으로 함수를 내 보냅니다. 셸이 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
답변
`echo "export" $((set -o posix ; set)|awk -F "=" "BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}")`
-
먼저 설정된 모든 환경 변수를 가져옵니다.
(set -o posix ; set)
참조 : https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-defined-environment-variables-in-a-linux-ba -
공백으로 구분 된 모든 환경 변수 이름 가져 오기 :
awk -F "=" "BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}"
참조 : awk-Printing column valu e 새 줄없이 쉼표 추가 및 https://stackoverflow.com/questions/14212993/regular-expression-to-match-a-pattern-inside-awk-command -
이제 이러한 변수를 내 보내야하지만 xargs는 자식 프로세스를 포크하기 때문에이를 수행 할 수 없습니다. 내보내기는 현재 프로세스에서 실행되어야합니다.
echo "export" ...
원하는 명령을 빌드 한 다음“를 사용하여 실행합니다. 그게 전부입니다.
댓글
- U에 오신 것을 환영합니다. & L SE. 게시물을 편집하고 설명을 할 수 있습니다.
- 환경 변수 이름이 az로만 구성된다고 가정하는 것은 올바르지 않습니다.
- ' 및 AZ. 일반적으로 밑줄과 숫자도 포함되므로 패턴은
[a-zA-Z_][a-zA-Z0-9_]*
가됩니다. 쉘에 따라 약간의 변형이 있습니다. ' 사용하고 있지만 이것이 안전하고 이식 가능한 접근 방식입니다. - 좋은 점 @ChrisJohnson-업데이트되었습니다!
답변
awk
및 iv id = “69a748bd07″을 통해 변수 이름 앞에 export
를 추가 할 수 있습니다. >
결과 출력 :
eval $(printenv | awk -F= "{ print "export " $1 }")
댓글
-
printenv
는 이미 내 보낸 변수를 인쇄합니다. 또한 '가 작동하지 않습니다. 개행 문자를 포함하는 변수가있는 경우 오류가 발생합니다.
set
는 BASH_VERSION과 같은 기능 및 시스템 변수도 표시합니다.set
에서 발췌 한 결과 '가 보여 주나요? 그렇다면 '는bash
'가 아닙니다. 특수 쉘 변수를 포함하여 현재 설정된 모든 변수를 내보내시겠습니까? 아니면export a b c
?export ${!T*}
와 같은 3 개의 변수 만 이름이. 불행히도 ' 정의 된 모든 매개 변수 목록을 쉽게 생성 할 수있는 방법이없는 것 같습니다.