使用带有 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 的变量来生成文件的主要内容,如果未能解决你的问题,请参考以下文章
使用cat和EOF生成 shell 脚本时会自动解析变量的解决办法