我儘可能簡化了這種情況。我試圖讓第二個版本能夠正確使用引號。第一個按預期工作。不幸的是,我無法改變第二種方式如何被調用。然而,我能夠改變REALTEST的價值。無論我嘗試引用,我都無法讓第二個接受間隔字符串。如何將封裝變量傳遞到新環境中
這就是我要做的:
#!/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"
這裏是我的輸出:
-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
什麼方法,我可以解決這個任何想法或者這只是平出不可能?
我簡化了我的問題。我在這裏發佈了一個新的:http://stackoverflow.com/questions/42557008/encapsulating-strings-of-variables-in-bash – DrMilk