1

我正在通过期望发送发送 awk 命令,当我发送时我收到错误但我无法读取 1 没有这样的变量

我确实使用了 {{}} mechansim,但我确实工作了,

expect "$prompt" {
    send "awk {{print $1}} /mytest/test.log\r"
}

我尝试使用 eascapse 序列 \,但我没有找到任何响应 expect_out(buffer),..etc

    expect "$prompt" {
    send "awk '{print \$1}' /mytest/test.log\r"
}

我也尝试使用 exec 命令

    expect "$prompt" {
    send "exec awk {{print $1}} /mytest/test.log\r"
}
4

1 回答 1

5

您必须使用花括号来避免替换。或者,您也必须避开美元符号和花括号。

几个例子:


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)
于 2013-07-12T09:18:52.627 回答