【发布时间】:2017-09-15 03:52:17
【问题描述】:
我想知道在使用 ErLang 时如何将参数传递给 shell 脚本?我知道我可以使用 os:cmd() 来执行 shell 脚本,但我发现我无法将参数传递给这个命令。
例如,我有一个参数L = 2,我希望我的shell 脚本使用这个参数,所以erlang 命令应该是os:cmd("bash echo.sh L")。但是,输出是 L,但我想得到 2。谁能帮帮我?
【问题讨论】:
我想知道在使用 ErLang 时如何将参数传递给 shell 脚本?我知道我可以使用 os:cmd() 来执行 shell 脚本,但我发现我无法将参数传递给这个命令。
例如,我有一个参数L = 2,我希望我的shell 脚本使用这个参数,所以erlang 命令应该是os:cmd("bash echo.sh L")。但是,输出是 L,但我想得到 2。谁能帮帮我?
【问题讨论】:
函数 io_lib:format/2 允许您准备一个字符串,然后将其传递给 os:command/1 :
S = io_lib:format("bash echo.sh ~p",[L]),
os:cmd(S),
S 是一个嵌套列表,我不记得它是否被os:cmd/1 接受,否则你将不得不将结果扁平化os:cmd(lists:flatten(S))
【讨论】:
os:cmd 接受原子和深度列表,但不接受二进制文件。