2013-07-12 55 views
1

我发送awk命令通过期望发送,当我发送我得到错误,但我不能读取1没有这样的变量使用AWK期望发送获取无法读取“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" 
} 

回答

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 [email protected] 
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)