在Elixir中使用System.cmd/3



可能是一个幼稚的问题,

我在红宝石中有这个

system(ansible-playbook -i #{ip_address}, #{file_to_run}")
system(sudo chmod -R ugo+rw /etc/ansible)

尝试使用系统.cmd/3 的差异重现这一点

System.cmd("sudo chmod -R ugo+rw /etc/ansible",[],[])

获得一个

 (ErlangError) erlang error: :enoent

请问我该如何纠正?

命令

的每个参数都必须作为列表中的单独字符串给出,作为第二个参数传递给System.cmd/3

System.cmd("sudo", ["chmod", "-R", "ugo+rw", "/etc/ansible"])

如果所有参数都是文字字符串,并且它们都不包含空格,则还可以使用~w符号:

System.cmd("sudo", ~w(chmod -R ugo+rw /etc/ansible))

由于System.cmd/3第三个参数具有默认值,因此您可以像我上面所做的那样省略它。

最新更新