我有以下shell声明:
kotlinc AimToTen.kt
并希望使用gs -q -dNODISPLAY -c "(/Users/developer/Desktop/1449367569_Concurrency.pdf) (r) file runpdfbegin pdfpagecount = quit"
函数在elixir中执行。我尝试了如下:
system.cmd
但它根本不起作用。输出什么都没有。
答案 0 :(得分:1)
在您发布的原始命令中,shell将4个参数传递给gs
:
-q
-dNODISPLAY
-c
(/Users/developer/Desktop/1449367569_Concurrency.pdf) (r) file runpdfbegin pdfpagecount = quit
(/Users/developer/Desktop/1449367569_Concurrency.pdf) (r) file runpdfbegin pdfpagecount = quit
周围的双引号未传递给gs
;它只是shell语法的一部分,对于想要在参数中包含空格字符时非常有用。例如,echo "foo"
只打印foo
,而不是"foo"
。
所以你需要将-c
和其余的分成不同的字符串,而不是在最后一个参数中包含双引号:
System.cmd("gs", ["-q", "-dNODISPLAY", "-c", "(/Users/developer/Desktop/1449367569_Concurrency.pdf) (r) file runpdfbegin pdfpagecount = quit"])