zis*_*los 6 windows bash markdown cmd pandoc
我的文件夹中有几个 Markdown ( .md) 文件,我想连接它们并使用 Pandoc 获得最终的 Markdown 文件。我写了一个这样的 bash 文件:
#!/bin/bash
pandoc *.md > final.md
Run Code Online (Sandbox Code Playgroud)
但当我双击它时,出现以下错误:
pandoc: *.md: openBinaryFile: 无效参数(无效参数)
并且final.md文件是空的。
如果我尝试这个:
pandoc file1.md file2.md .... final.md
Run Code Online (Sandbox Code Playgroud)
我得到了我期望的结果:一个final.md包含所有其他 Markdown 文件内容的文件。
在 macOS 上它运行良好。为什么这在 Windows 上不起作用?
在类 Unix shell(如 bash,您的脚本是为其编写的)上,全局扩展(例如变成*.md)file1.md file2.md file3.md是由 shell 执行的,而不是您正在运行的应用程序。您的应用程序看到的是最终的文件列表,而不是通配符。
然而,glob 扩展cmd.exe是由应用程序执行的:
Windows命令解释器cmd.exe依赖于应用程序中的运行时函数来执行通配。
因此,*.md当 Pandoc 希望看到file1.md file2.md file3.md. 它不知道如何扩展 glob 本身,并尝试打开一个名为*.md.
您应该能够在类似 UNIX 的 shell 中运行 bash 脚本,例如 Cygwin 或Windows 上的 bash。它也可以在 PowerShell 上运行,尽管我没有方便测试的机器。作为最后的手段,您可以跳过一些步骤来编写一个批处理文件来扩展 glob 并将文件名传递给 Pandoc。
| 归档时间: |
|
| 查看次数: |
5597 次 |
| 最近记录: |