我在文件夹中有几个Markdown(.md
)文件,我想连接它们并使用Pandoc获取最终的Markdown文件。我写了一个像这样的bash文件:
#!/bin/bash
pandoc *.md > final.md
但是当我双击它时出现以下错误:
pandoc:* .md:openBinaryFile:无效参数(无效参数)
并且final.md
文件为空。
如果我试试这个:
pandoc file1.md file2.md .... final.md
我得到了我期望的结果:final.md
文件,其中包含所有其他Markdown文件的内容。
在macOS上它运行正常。为什么这不适用于Windows?
答案 0 :(得分:0)
在类Unix的shell上(比如你的脚本编写的bash),glob扩展(例如将*.md
转换为file1.md file2.md file3.md
)是performed by the shell,而不是你正在运行的应用程序。您的应用程序会看到最终的文件列表,而不是通配符。
但是,cmd.exe
中的glob扩展是由应用程序执行的:
因此,当Pandoc希望查看*.md
等文件列表时,会传递文字file1.md file2.md file3.md
。它不知道如何扩展glob本身并尝试打开名为*.md
的文件。
您应该能够在像Cygwin或bash on Windows这样的类似unix的shell中运行bash脚本。它也可以在PowerShell上运行,但我没有便于测试的机器。作为最后的手段,您可以jump through some hoops编写一个扩展glob并将文件名传递给Pandoc的批处理文件。