如何使用 expect 创建 sh 脚本?

How to create sh script with expect?

我正在尝试使用嵌入式系统的 expect 脚本创建一个 sh 脚本(我不想更改固件以包含此脚本)。所以,我有以下脚本,由于 if-block 中 val 的错误使用,它不起作用:

#!/usr/bin/env expect

set timeout 20
set ipaddr [lindex $argv 0]
spawn telnet $ipaddr
expect "soc1 login: "
send "root\n"
expect "prompt # "
send "val=`some_command`\n"
expect "prompt # "
send "if [ $val -eq 0 ]; then echo Good; fi\n"
# its here ^^^^^
expect "prompt # "
send "exit\n"
interact

我试过 $$ 但没有用。 如何修复此脚本以允许在 sh 脚本中使用变量?

脚本的问题在于 []interpretation by Tcl - 这些括号应该被转义:

send "if \[ $val -eq 0 \]; then echo Good; fi\n"
# its here ^^^^^