如何使用 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 ^^^^^
我正在尝试使用嵌入式系统的 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 ^^^^^