【问题标题】:Omit comments from heredoc省略heredoc的注释
【发布时间】:2020-12-15 12:29:43
【问题描述】:

我正在尝试使用cat <<EOL 将多行文本写入文件。我想问一下是否可以注释掉该命令中的文本行。如果我使用#,它仍然会打印到文件中。

cat >$HOME/myfile <<EOL
text
# text to be commented out
text
EOL

【问题讨论】:

  • 这不是“cat eol 命令”。这是一个heredoc。
  • heredoc 是一个文件,不是bash 处理的脚本。没有 cmets,只有文本。

标签: bash heredoc


【解决方案1】:

是的,您可以使用sed

cat <<EOF |  sed '/^#/d' > myfile
Hello
# there!
World
EOF

Hello\nWorld 写入myfile

【讨论】:

  • 你不需要cat
  • 没错,但鉴于 OP 称为“heredoc”和“cat eol 命令”,我认为他们不是 bash 专家,我认为现在不是尝试教学的合适时机他们关于猫的无用用途。我认为使用这种管道设置对 OP 来说更清楚。我知道当我第一次学习时,这对我来说更清楚。
【解决方案2】:

注释可以通过使用grep而不是cat来省略:

grep -v "^#" > myfile <<EOF
# line omitted
but this whole line is # included, with the comment too
EOF

如果您想删除 # 之后的所有内容,您可以使用 sed 就像在另一个答案中一样,但请仔细决定您要对剩余的空白区域做什么:它是被删除还是包含在输出?

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多