bash 根据返回值做出决定

bash making decisions on returned values

我有一个脚本可以从 keepass 数据库 (kpcli) 中找到用户名、密码和 IP 地址,并且有一个变量 $ssh_info returns 输出到 3 行,如下所示

bobuser
bobpassword
bobip

我在 bash 脚本中最好的方法是什么,然后说获取 $ssh_info

的结果
ssh bobuser@bobip and then use expect to send the password

类似

echo ""  (bobpassword)
ssh @  (ssh bobuser@bobip)

甚至是将 $2 (bobpassword) 传递到 ssh $1@$3

的期望脚本

感谢您的帮助!

也许这就是您的想法?

expect <<END_EXPECT
    lassign [split "$ssh_info" \n] user pw ip
    ssh $user@$ip
    expect "assword:"
    send -- "$pw\r"
    interact
END_EXPECT

即使用shell变量$ssh_info。 Tcl 变量需要一个反斜杠来隐藏它们 shell.

如果要拆分 shell 中的多行字符串,我会执行以下操作之一

{ read user; read pw; read ip; } <<<"$ssh_info"
mapfile -t info <<<"$ssh_info"  # then use ${info[0]}, ${info[1]}, ${info[2]}