带有pdflatex-职位名称的贵族计划系统*

问题描述 投票:0回答:1

我正在尝试从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。

scheme gnu guile
1个回答
0
投票

使用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周围添加多余的引号;由于它不使用外壳程序,因此不会解析特殊字符。

© www.soinside.com 2019 - 2024. All rights reserved.