bash - 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
解决方案
错误消息没有指向正确的行,但在我的一个标题(上面未显示)中,我输出了一个 Jekyll 变量,例如{{url}}
. 看起来它们在前面的问题中不受支持。删除这个解决了这个问题。
推荐阅读
- python - 多页爬虫给出错误的结果
- php - PHP多个事件发送
- flutter - 致命错误:找不到“Flutter/Flutter.h”文件#import
- ios - DateFormatter 没有给出正确的结果
- c - 如何使部分仅在运行时
- penetration-testing - 使用 burp 套件的密码猜测攻击中显示的状态码不正确
- angular - 如何从输入中过滤更多单词的数组中的数据?
- javascript - v-for 循环中的动态 v-model 复选框
- python - 如果程序很慢,Pygame 窗口没有响应
- javascript - 如何使用头盔或 ssr api 导入静态 js 文件以及如何避免 Uncaught SyntaxError?