shell - IO.gets 的 Expect-like 功能?

标签 shell elixir elixir-mix

例如,如果我想自动授权 hex 用户。有点像

mix hex.user auth
#!/usr/bin/expect -f

expect "Username: "
send -- "$HEX_USERNAME\r"
expect "Password: "
send -- "$HEX_PASSWORD\r"

mix hex.user auth 要求输入用户名:和密码:但我认为 expect 对此不起作用

最佳答案

给定以下脚本:

u = IO.gets("Username: ") |> String.strip
p = IO.gets("Password: ") |> String.strip

IO.puts ""
IO.puts "#{u} - #{p}"

你可以像这样传递输入:

$ export HEX_USERNAME="hexuser"
$ export HEX_PASSWORD="hexpass"
$ echo "$HEX_USERNAME\n$HEX_PASSWORD" | elixir test.exs
Username: Password:
hexuser - hexpass

所以,你可以使用

echo "$HEX_USERNAME\n$HEX_PASSWORD" | mix hex.user auth

关于shell - IO.gets 的 Expect-like 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821652/

相关文章:

linux - 制作用于在 CentOS 4.1 上安装 VNC 服务器的 .sh 脚本

linux - 使用 ls 列出子目录

elixir - :dets. open_file 参数错误

linux - 带有 sudo 和 System.cmd ("mount"的 IEx block )

build - 混合 Erlang/Elixir 项目 - 我可以使用 mix 或 rebar 吗?

shell - 使用default.nix文件运行命令

testing - 如何测试来自不同模块的函数调用

elixir - 为什么我会收到此错误 `(Mix) Could not find an SCM for dependency :cowboy `

config - EXRM - 我可以从 config.exs 文件设置 vm.args 值吗?

linux - 如何使用 while 循环和 if 语句编写单行 shell 脚本