我正在尝试从guile方案文件中调用pdflatex
。这是我正在使用的Guile命令:
(system*
"cat" "foo.txt" "|" "pdflatex" "-jobname" "\"bar\"")
这是运行文件后我得到的错误:
cat: invalid option -- 'j'
Try 'cat --help' for more information.
如果我从bash shell运行命令,它将正常运行。
cat foo.txt | pdflatex -jobname "bar"
[-jobname
是用于pdflatex
的正确命令,但是system*
似乎有问题。
我正在使用(GNU Guile)2.2.4和pdfTeX 3.14159265-2.6-1.40.20。
使用system
,而不是system*
。它使用单个字符串作为参数,并使用外壳执行它,它将执行所需的管道。
(system "cat foo.txt | pdflatex -jobname 'bar'")
system*
不使用外壳。正如manual解释的那样:
system*
与系统类似,但是每个参数仅接受一个字符串,并且不执行任何shell解释。该命令使用fork和execlp执行。因此,在不需要解释shell的情况下,此功能可能比系统更安全。
请注意,您的命令是Useless use of cat
,因为cat
将文件名作为参数。您可以使用pdflatex
直接执行它。
system*
此外,当您使用(system* "pdflatex" "-jobname" "bar" "foo.txt")
时,您无需在bar
周围添加多余的引号;由于它不使用外壳程序,因此不会解析特殊字符。