背景:我正在嘗試編寫一個用於測試特殊字符密碼的expect腳本。其中一個我無法執行的測試用例是在密碼前加上了特殊字符「 - 」。例如:「-foo」 注:假設SSH關鍵是出了問題 注:假設bash shell的是,我使用在預期腳本中使用密碼變量
我的代碼外殼: 這是我的連接功能,禮貌維基百科:
proc connect {passwd} {
expect {
"yes/no" {
send "yes\r"
}
}
expect {
"?assword:" {
send "$passwd\r"
expect {
"sftp*" {
return 0
}
}
}
}
# timed out
return 1
}
set user [lindex $argv 0]
set passwd [lindex $argv 1]
set host [lindex $argv 2]
spawn sftp [email protected]$host
puts '$passwd'\r
set rez [connect $passwd]
在我的bash腳本我有:
passwd="-foo"
./sftp_test $user $passwd $host
我已經試過:從我所瞭解的問題是,外殼正在擴大變量,因此該命令被解釋爲send -foo,它表示發送的密碼無效。
我試過使用單引號作爲一般的解決方案,但密碼被拒絕(我懷疑單引號被保留)。 發送「$ passwd文件」爲「\ r」
問題:有我逃避send命令的密碼,這樣我可以用它爲密碼的特殊字符的所有排列方式(例如, $ foo和f $ oo和-foo)?