使用awk在expect中获取无法读取“1”:没有这样的变量错误

时间:2013-07-12 07:27:03

标签: awk tcl expect

我发送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"
}

1 个答案:

答案 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)