1
當我試圖運行Ansible與Runtime.getRuntime().exec
與Java我可以獲得Java Runtime.getRuntime()。exec的真正完全執行的命令嗎?
這裏是我做過什麼:
String[] cmd = {"ansible-playbook", "/path/to/playbook", "--extra-vars", "'{\"filePath\":\"/path/to/file\"}'"};
Process process = Runtime.getRuntime().exec(cmd, null);
我得到了這樣的錯誤消息:
FAILED! => {"failed": true, "msg": "'filePath' is undefined"}
然而,當我執行與終端相同的命令:
ansible-playbook /path/to/playbook --extra-vars '{"filePath":"/path/to/file"}'
一切都很好...
我認爲,我在終端和Java中運行的命令,可能是撇號或引號之間必須有一些差異?
我想知道有沒有什麼辦法可以得到真正執行的命令Runtime.getRuntime().exec
?就像我可以得到由history
一些用戶的命令行歷史...
你不需要第三個參數中的單引號:exec命令爲你「引用」它。 '「{\」filePath \「:\」/ path/to/file \「}」'很好。 –
@AndyTurner謝謝!爲什麼單引號版本在終端上工作... – kaze13
因爲終端不會爲您引用它。 –