【发布时间】:2019-05-12 07:48:47
【问题描述】:
我们的密码是bt67nJuse3?{]=_0!\`fr,./&##@(引号除外)。此密码包含可能需要转义的字符,例如{、`、/、.、!。尝试了很多组合都无济于事,在花费大量时间尝试解决此问题后,以下 sn-p 无法正常工作。
已经试过了:
'bt67nJuse3?{]=_0!`fr,./&##@'"\r""bt67nJuse3?{]=_0!`fr,./&##@\r""bt67nJuse3?{]=_0"'!'"`fr,./&##@\r"'bt67nJuse3?{]=_0!`fr,./&##@\r'"bt67nJuse3?{]=_0!\`fr,./&##@\r""bt67nJuse3?{]=_0!\`fr,./&##@\r"
代码开始:
#!/bin/bash
/usr/bin/expect << EOF
spawn scp user111@servername.domain.com:/home/path1/test1.log /home/path2/
expect {
" password: " { send 'bt67nJuse3?{]=_0!`fr,./&##@'"\r"; exp_continue }
eof
}
... some code ...
EOF
我怎样才能把这个密码输入expect?
【问题讨论】:
-
用 \. 转义反引号
-
无法使用“bt67nJuse3?{]=_0!`fr,./#@\r”在执行“expect {”密码:“{发送“bt67nJuse3?{ ]=_0!`fr,./#@\r"; exp_continue } eof } "
-
尝试先声明密码,设置密码 "bt67nJuse3?{]=_0!`fr,./#@";然后发送“$password\r”
-
问题可能是由于引用缺少 arround bash here-doc delimiter EOF 比较
cat <<'EOF'和cat <<EOF在第一个变量中没有展开,而在第二个变量中 -
我试过这个并使用`表示“
" and it pasted the wrong password set password "bt67nJuse3?{]=_0!fr,./#@”;发送“$password\r”
标签: linux bash shell expect heredoc