我试图找出如何使字符串(从文件加载)中的bash(强制?)扩展变量.
我有一个名为"something.txt"的文件,内容如下:
hello $FOO world
Run Code Online (Sandbox Code Playgroud)
然后我跑了
export FOO=42
echo $(cat something.txt)
Run Code Online (Sandbox Code Playgroud)
这会返回:
hello $FOO world
Run Code Online (Sandbox Code Playgroud)
即使变量已设置,它也没有扩展$ FOO.我无法评估或获取文件 - 因为它会尝试并执行它(它不是可执行的 - 我只是想要插入变量的字符串).
有任何想法吗?
我有这样的代码:
TEXT_TO_FILTER='I would like to replace this $var to proper value
in multiline text'
var=variable
Run Code Online (Sandbox Code Playgroud)
我想要的是:
TEXT_AFTER_FILTERED="I'd like to replace this variable to proper value"
Run Code Online (Sandbox Code Playgroud)
所以我做了:
TEXT_AFTER_FILTERED=`eval echo $TEXT_TO_FILTER`
TEXT_AFTER_FILTERED=`eval echo $(eval echo $TEXT_TO_FILTER)`
Run Code Online (Sandbox Code Playgroud)
或者甚至更奇怪的东西,但没有任何影响.我记得有一天我有类似的问题,我做了类似的事情:
cat << EOF > tmp.sh
echo $TEXT_TO_FILTER
EOF
chmod +x tmp.sh
TEXT_AFTER_FILTERED=`. tmp.sh`
Run Code Online (Sandbox Code Playgroud)
但这个解决方案似乎要复杂得多.你有没有听说过更简单的解决方案?