【问题标题】:Trying to collect output from multiple statments试图从多个语句中收集输出
【发布时间】:2015-04-03 22:20:23
【问题描述】:

有没有办法包装所有这些写入(双关语)不仅```在 temp.md 中

echo "\`\`\`" && cat temp.txt && echo "\`\`\`" > temp.md

【问题讨论】:

  • 问题与它所标记的任何标签有什么关系?
  • 很抱歉,从我要发布的问题中回收!

标签: bash pipe output echo cat


【解决方案1】:

使用单引号更简单(不需要反斜杠):

{ echo '```' && cat temp.txt && echo '```'; }  >temp.md

或者,如果您想更好地控制输出格式,printf 很方便:

printf '```\n%s\n```\n' "$(cat temp.txt)" >temp.md

为什么要使用单引号?

来自man bash

用单引号括起来的字符会保留引号内每个字符的字面值。单引号可能 不会出现在单引号之间,即使前面有反斜杠。

换句话说,您可以将任何内容放在单引号内,除了单引号,它将保持不变。无需转义。

相比之下,shell 处理双引号内的字符。来自man bash

用双引号括起来的字符会保留引号内所有字符的字面值,$ 除外, `, \,并且,当启用历史扩展时,!。

例如,在双引号内,shell 将执行变量替换、命令替换和算术扩展。除非您希望这些事情发生,否则不要使用双引号。

【讨论】:

    【解决方案2】:

    找到了!

    (echo "\`\`\`" && cat temp.txt && echo "\`\`\`") > temp.md
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多