我发送awk命令通过expect发送,当我发送时我收到错误但我无法读取1没有这样的变量
我确实使用了{{}} mechansim,但我确实工作了,
expect "$prompt" {
send "awk {{print $1}} /mytest/test.log\r"
}
我尝试使用eascapse序列\,但我没有找到任何响应expect_out(缓冲区),等等
expect "$prompt" {
send "awk '{print \$1}' /mytest/test.log\r"
}
我也尝试过exec命令
expect "$prompt" {
send "exec awk {{print $1}} /mytest/test.log\r"
}
答案 0 :(得分:4)
你必须使用花括号来避免替换。或者你也必须逃脱美元符号和花括号。
几个例子:
1.与本地计算机上的程序进行交互:
#!/usr/bin/expect -d
spawn "/bin/bash"
set cmd "awk '\{print \$1\}' /mytest/test.log\r"
send $cmd
expect eof
puts $expect_out(buffer)
2.通过ssh与远程程序交互:
#!/usr/bin/expect -d
append cmd {awk '{print $1}' /mytest/test.log} "\r"
spawn ssh user@hostname
set prompt ":|#|\\\$"
interact -o -nobuffer -re $prompt return
send "mypassword\r"
interact -o -nobuffer -re $prompt return
send $cmd
send "exit\r"
expect eof
puts $expect_out(buffer)