【问题标题】:Using System.cmd/3 in Elixir在 Elixir 中使用 System.cmd/3
【发布时间】:2017-09-11 11:09:14
【问题描述】:

可能是一个幼稚的问题,

我在红宝石里有这个

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

请问我该如何纠正这个问题?

【问题讨论】:

    标签: erlang elixir phoenix-framework


    【解决方案1】:

    命令的每个参数必须作为列表中的单独字符串给出,作为第二个参数传递给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 有第三个参数的默认值,您可以像我上面所做的那样省略它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      相关资源
      最近更新 更多