가능한 한이 시나리오를 단순화했습니다. 나는 두 번째 버전을 적절한 이스케이프 된 따옴표로 작업하려고합니다. 첫 번째 예상대로 작동합니다. 불행히도 두 번째 호출 방법을 변경할 수 없습니다. 그러나 저는 REALTEST의 가치를 바꿀 수 있습니다. 따옴표로 무엇을 시도했는지에 상관없이 두 번째 문자열에 간격 띄우기 문자열을 사용할 수 없습니다.캡슐화 된 변수를 새 환경에 전달하는 방법
-bash-4.2$ ./test.sh
+ env -i 'TESTVAR=some spaced string' /bin/bash -l -c 'echo $TESTVAR'
some spaced string
+ REALTEST='TESTVAR=some spaced string'
+ env -i TESTVAR=some spaced string /bin/bash -l -c 'echo $TESTVAR'
env: spaced: No such file or directory
나는이 문제를 해결하기 위해 취할 수있는 방법에 대한 어떤 생각을 또는이 단지 플랫 아웃하지 : 여기
#!/bin/bash -x
env -i TESTVAR="some spaced string" /bin/bash -l -c "echo \$TESTVAR"
REALTEST=TESTVAR="some spaced string"
env -i $REALTEST /bin/bash -l -c "echo \$TESTVAR"
내 출력 :
이
은 내가 뭘하려고 오전입니다 가능한?
나는 내 질문을 단순화했다. 나는 여기에 새로운 것을 올렸다 : http://stackoverflow.com/questions/42557008/encapsulating-strings-of-variables-in-bash – DrMilk