使用带有 EOF 的变量来生成文件

Posted

技术标签:

【中文标题】使用带有 EOF 的变量来生成文件【英文标题】:Use variable with the EOF to generate a file 【发布时间】:2017-11-17 09:46:58 【问题描述】:

我正在尝试根据this SO 之后的shell 变量生成一个.js 文件。但是,脚本仍然使用APP_VERSION: $bumped_version创建文件

这是我的脚本:

version=9.9.9

cat > ./constant/app.js <<'msg'
export default Object.freeze(
  APP_VERSION: $bumped_version
)
msg

生成的 app.js:

export default Object.freeze(
  APP_VERSION: $bumped_version
)

感谢您的帮助!

【问题讨论】:

从 msg 中删除引号,其中明确表示,不要扩展任何变量或通配符。 @grail 啊...谢谢,刚才走错方向了。你能回答这个问题以便我标记它吗? 【参考方案1】:

Heredocs 有几种不同的使用方式:

    标准 - 这允许扩展参数,但必须使结束词硬靠左边缘:

cat <<EOF ... EOF

    缩进 - 在这里您可以使用制表符来缩进文本和结束词

cat <<-EOF [tab][tab]... [tab]EOF

    引用 - 此版本防止进行任何扩展,如果您使用它来创建另一个带有变量的脚本,这将很有用。 如果输出到文件,每行开头的所有选项卡都将被删除

cat <<'EOF' ... EOF

您也可以将 2 和 3 结合起来。

【讨论】:

以上是关于使用带有 EOF 的变量来生成文件的主要内容,如果未能解决你的问题,请参考以下文章