首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandoc批量转换

Pandoc批量转换
EN

Code Review用户
提问于 2020-02-21 21:12:22
回答 1查看 569关注 0票数 3

我编写了一个简单的bash脚本,以便通过pandoc批量转换Markdown文件,它正在为我工作。但我觉得密码很脏。你能帮我改进一下吗?

代码语言:javascript
复制
#!/bin/bash

rm -r out; mkdir out

for f in src/*.md
do
    filename=$(basename "$f")
    filename="${filename%.*}"
    echo "Processing $filename"
    pandoc "$f" -o "out/$filename.epub"
    pandoc "$f" -o "out/$filename.pdf"
done
EN

回答 1

Code Review用户

回答已采纳

发布于 2020-02-21 23:42:11

整体和好东西

这挺不错的。我绝对不会说代码是脏的。好东西:

  • 压痕很好
  • 在变量替换前后加上双引号是一种最佳做法。
  • 使用$()进行命令替换也是最佳实践。
  • #!是好的
  • 向用户提供有意义的输出很好
  • 变量名是可以的

建议

  • 我把rm -r out; mkdir out放在一条线上听起来不错,因为它们是相关的,但这无助于这里的可读性。如果您想将它们绑定在一起,以便除非mkdir成功,否则rm不会运行,那么您可以执行rm -r out && mkdir out。否则我会把它们放在两条线上。像你已经做过的那样,用空白行把事情分开,就足以说明哪些东西应该放在一起。
  • 当然,for f in src/*.md大部分时间都能工作,但是如果文件名中有空白,就会中断。解决这个问题涉及到使用查找这个答案是一个含糊不清的问题的一部分,但它可能更容易理解。
  • ffilename作为变量有点让人费解。对于这么短的事情,它是相当无害的,这就是为什么我说他们在上面是好的。如果您想调整这个f,作为fullpathfqfn可能更有意义。而filename可能更像basenamebase
  • 加上if ! which pandoc..。如果pandoc丢失了,请靠近顶部去捕捉。
代码语言:javascript
复制
if ! which pandoc > /dev/null; then
        echo you need pandoc
        exit 1
fi

再读

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/237721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档