kok*_*ing 5 string bash replace
我有这样的代码:
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)
但这个解决方案似乎要复杂得多.你有没有听说过更简单的解决方案?
出于安全原因,最好避免eval。像这样的东西会更好:
TEXT_TO_FILTER='I would like to replace this %s to proper value'
var=variable
printf -v TEXT_AFTER_FILTERED "$TEXT_TO_FILTER" "$var"
# or TEXT_AFTER_FILTERED=$(printf "$TEXT_TO_FILTER" "$var")
echo "$TEXT_AFTER_FILTERED"
Run Code Online (Sandbox Code Playgroud)