可能是一个幼稚的问题,
我在红宝石中有这个
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
第三个参数具有默认值,因此您可以像我上面所做的那样省略它。