首页 > 解决方案 > jekyll 标头的 echo -e "---\n..." 生成 YAML 异常

问题描述

我编写了一个脚本,可以自动将 ipython 笔记本转换为 markdown,在将输出保存到文件之前,我通过在 bash 中执行以下操作来添加 Jekyll 标头:

echo -e "---\ntitle: $title\n---\n\n$(cat $destfile)" > "$destfile"

问题是每当我添加 Jekyll 标头时,它都会生成一个 YAML 异常:

Error: YAML Exception reading notebook.md: (<unknown>): did not find expected key while parsing a block mapping at line 2 column 1

使用 sublime 查看时的输出如下所示,与预期的 Jekyll 标头完全一样:

---
title: Built-in Data Iterators
---

### Note

Please view the README

一旦我删除了标题,Jekyll 就可以正常编译了。如果我手动创建另一个具有完全相同标题的 Jekyll 文件,它就可以正常工作。这里发生了什么?这是某种字符编码问题吗?

更新

尝试使用时也会发生同样的情况printf

{
    printf "%s\n" "---"
    printf "%s\n" "title: ${title}"
    printf "%s\n" "---"
    printf "%s\n" "${output}"
} > "$destfile"

更新2

使用该file命令,它会出现(无论出于何种原因)输出文件正在使用ASCII text, with CRLF, LF line terminators

标签: bashechojekyll

解决方案


错误消息没有指向正确的行,但在我的一个标题(上面未显示)中,我输出了一个 Jekyll 变量,例如{{url}}. 看起来它们在前面的问题中不受支持。删除这个解决了这个问题。


推荐阅读