期望在bash调试中看到响应,但我无法得到它。

期望在bash调试中看到响应,但我无法得到它。,bash,expect,Bash,Expect,我正在尝试从keepass数据库获取信息,但我无法通过最后一步 #!/usr/bin/env bash #!/usr/bin/expect firewall=$1 password="PASSWORD" echo "connecting to KeepassDB..." function get_creds { expect <<- DONE set timeout 10 spawn kpcli match_max 100000000 expect

我正在尝试从keepass数据库获取信息,但我无法通过最后一步

#!/usr/bin/env bash
#!/usr/bin/expect

firewall=$1
password="PASSWORD"
echo "connecting to KeepassDB..."

function get_creds {
expect <<- DONE
    set timeout 10
    spawn kpcli
    match_max 100000000
    expect  "kpcli:/>"
    send    "open /media/sf_VM_shared/keepass.kdb\n"
    expect  "password:"
    send    "$password\n"
    expect  ">"
    send    "cd General/Network/Firewalls/SSH\n"
    expect  "SSH>"
    send    "ls\n"
    expect  ">"
DONE

}


credentials=$(get_creds)
echo $credentials 
#/usr/bin/env bash
#!/usr/bin/expect
防火墙=$1
password=“password”
echo“连接到KeepassDB…”
功能获得信任{

expect使用bash-x时会得到输出,因为每个命令输出在运行后都会打印出来(调试模式)

脚本不打印,因为
get\u creds
的最后一行输出为空。它应该打印方法的最后一行输出

使用echo输出凭据时,应使用qoutes(“)以保留换行符

尝试用以下内容替换脚本中的最后一行:

echo "$credentials"

为什么你有两个shebang?哇!两天来我一直在挠头。现在我可以把它敲在桌子上了。:-)谢谢。