我编写了一个简单的bash脚本,以便通过pandoc批量转换Markdown文件,它正在为我工作。但我觉得密码很脏。你能帮我改进一下吗?
#!/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发布于 2020-02-21 23:42:11
这挺不错的。我绝对不会说代码是脏的。好东西:
$()进行命令替换也是最佳实践。#!是好的rm -r out; mkdir out放在一条线上听起来不错,因为它们是相关的,但这无助于这里的可读性。如果您想将它们绑定在一起,以便除非mkdir成功,否则rm不会运行,那么您可以执行rm -r out && mkdir out。否则我会把它们放在两条线上。像你已经做过的那样,用空白行把事情分开,就足以说明哪些东西应该放在一起。for f in src/*.md大部分时间都能工作,但是如果文件名中有空白,就会中断。解决这个问题涉及到使用查找。这个答案是一个含糊不清的问题的一部分,但它可能更容易理解。f和filename作为变量有点让人费解。对于这么短的事情,它是相当无害的,这就是为什么我说他们在上面是好的。如果您想调整这个f,作为fullpath或fqfn可能更有意义。而filename可能更像basename或base。if ! which pandoc..。如果pandoc丢失了,请靠近顶部去捕捉。if ! which pandoc > /dev/null; then
echo you need pandoc
exit 1
fibash的问题。如果苹果在采用zsh作为默认之后抛出重击,这可能会成为一个更当前的问题。https://codereview.stackexchange.com/questions/237721
复制相似问题