可能是一个天真的问题,
我在红宝石中得到了这个
system(ansible-playbook -i #{ip_address}, #{file_to_run}")
system(sudo chmod -R ugo+rw /etc/ansible)
尝试使用System.cmd / 3
的差异重现此问题System.cmd("sudo chmod -R ugo+rw /etc/ansible",[],[])
获得
(ErlangError) erlang error: :enoent
请问我该怎么纠正?
答案 0 :(得分:4)
命令的每个参数必须作为单独的字符串给出,作为第二个参数传递给System.cmd/3
:
System.cmd("sudo", ["chmod", "-R", "ugo+rw", "/etc/ansible"])
如果所有参数都是文字字符串而且它们都不包含空格,您也可以使用~w
sigil:
System.cmd("sudo", ~w(chmod -R ugo+rw /etc/ansible))
由于System.cmd/3
具有第三个参数的默认值,您可以省略它,就像我上面所做的那样。