作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将"template"文件的输出通过管道传输到 MySQL,该文件散布着 ${dbName}
等变量。替换这些实例并将输出转储到标准输出的命令行实用程序是什么?
输入文件被认为是安全的,但可能存在错误的替换定义。执行替换应避免执行意外的代码执行。
最佳答案
这是来自 yottatsa 的解决方案在一个类似的问题上,它只替换 $VAR 或 ${VAR} 之类的变量,并且是一个简短的一行
i=32 word=foo envsubst < template.txt
当然如果i和word在你的环境中,那么它就是
envsubst < template.txt
在我的 Mac 上,它看起来像是作为 gettext 和 MacGPG2
的一部分安装的这是对来自 mogsie 的解决方案的改进在类似的问题上,我的解决方案不要求您对双引号进行缩放,mogsie 需要,但他的是单行!
eval "cat <<EOF
$(<template.txt)
EOF
" 2> /dev/null
这两个解决方案的强大之处在于,您只能得到几种通常不会出现的 shell 扩展类型 $((...))、`...` 和 $(...),尽管反斜杠在这里是一个转义字符,但是你不用担心解析有bug,它做多行就好了。
关于bash - 如何替换文本文件中的 ${} 占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/415677/
我是一名优秀的程序员,十分优秀!