我有一个问题,即长格式参数未正确传递给特定的命令行实用程序。
所有这些工作:
Command::new("mpg321").arg("--gain 100").arg("file.mp3").spawn().unwrap()
Command::new("mpg123").arg("-h 2").arg("file.mp3").spawn().unwrap()
mpg123 --halfspeed 2 file.mp3
但是这个:
Command::new("mpg123").arg("--halfspeed 2").arg("file.mp3").spawn().unwrap()
返回值:
mpg123: Unknown option "halfspeed 2"
我怀疑该错误是在
mpg123
方面,但是由于从命令行调用它可以正常工作,所以没有完全意义。 最佳答案
mpg123希望这样调用:mpg123 --halfspeed 2 file.mp3
,这使argv
看起来像{"mpg123", "--halfspeed", "2", "file.mp3"}
。您的调用方式等效于mpg123 "--halfspeed 3" file.mp3
,这使argv
为{"mpg123", "--halfspeed 2", "file.mp3"}
,而mpg123
无法理解。"-h 2"
起作用的原因是可以使用单个字母选项而没有空格(这意味着您可以只写-h2
),因此对于那些参数解析器来说,它必须能够处理选项的字母和值位于同一argv
中的情况入口。显然,该逻辑是以即使argv
条目包含空格也可以工作的方式实现的。
关于linux - 使用std::process::Command时无法正确传递长格式参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37443293/