2
그래서 last question에 단순화로 인해 문제가 잘못 설명되었습니다. 출력 여기bash에서 변수의 캡슐화 문자열
#!/bin/bash -x
REALTEST+=" TESTVAR=\"some spaced string\""
REALTEST+=" TESTVAR2=\"some other spaced string\""
env -i $REALTEST /bin/bash -l -c "echo \$TESTVAR"
env -i '$REALTEST' /bin/bash -l -c "echo \$TESTVAR"
env -i "$REALTEST" /bin/bash -l -c "echo \$TESTVAR"
됩니다 : 여기
문제의 더 나은 표현
-bash-4.2$ ./test1.sh
+ REALTEST+=' TESTVAR="some spaced string"'
+ REALTEST+=' TESTVAR2="some other spaced string"'
+ env -i 'TESTVAR="some' spaced 'string"' 'TESTVAR2="some' other spaced 'string"' /bin/bash -l -c 'echo $TESTVAR'
env: spaced: No such file or directory
+ env -i '$REALTEST' /bin/bash -l -c 'echo $TESTVAR'
env: $REALTEST: No such file or directory
+ env -i ' TESTVAR="some spaced string" TESTVAR2="some other spaced string"' /bin/bash -l -c 'echo $TESTVAR'
내가처럼 보이도록 REALTEST을 얻을 수있는 방법 어떤 생각 :
env -i TESTVAR="some spaced string" TESTVAR2="some other spaced string" /bin/bash -l -c 'echo $TESTVAR'
REALTEST는 편집 할 수 있지만 echo는 편집 할 수 없습니다.
Ah! 정말 고맙습니다! 나는 배열을 사용하는 것조차하지 않았다! – DrMilk