대시 스크립트에 설정된 일부 환경 변수를 파일로 내보내고 싶습니다.
myvariable="line 1
LINE=3
some characters: # \" \$
line 5"
myvariable2="abc"
export myvariable myvariable2
예상 결과(사용 가능한 스크립트):
declare -x myvariable="line 1
LINE=3
some characters: # \" \$
line 5"
declare -x myvariable2="abc"
결과는 export
이 명령을 사용하여 얻은 것입니다. 그러나 모든 환경 변수를 내보내고 필터링을 허용하지 않습니다. 변수의 여러 줄 문자로 인해 결과를 계산할 수 없습니다 grep
.
이에 비해 이 printenv
명령은 선택한 변수만 출력할 수 있지만 이스케이프는 고려하지 않으며, 이 사용 사례에서는 변수 이름을 출력하지 않습니다.
답변1
또는 .zsh
yash
export -p myvariable myvariable2
예상대로 작동합니다.
그렇지 않은 경우에도 에서 bash
다음을 수행할 수 있습니다.
for var in myvariable myvariable2; do
printf 'export %s=%q\n' "$var" "${!var}"
done
POSIXly에서는 다음을 사용하여 수동으로 참조할 수 있습니다 awk
.
awk -v q="'" '
function escape(v) {
gsub(q, q "\\" q q, v)
return q v q
}
BEGIN {
for (i = 1; i < ARGC; i++)
print "export " ARGV[i] "=" escape(ENVIRON[ARGV[i]])
}' myvariable myvariable2
bash
재미를 위해 일부 쉘( , zsh
, mksh
, , ksh93
, not ) 에서 작동하는 해키 솔루션입니다 .yash
dash
(PS4=; set -x; export "myvariable=$myvariable") 2>&1