全部,
我想在expect脚本中执行一个unix语句.unix语句输出一个进程的rsize值。我以前没有预期编程。
这是我的代码:
#!/usr/bin/expect
set some_host "some host"
set Mycmd "top -l 1 -stats pid,rsize,command | grep Process_Name| awk '{print \$2};'"
spawn telnet localhost $some_host
expect "login:"
send "myDevice\r"
expect "Password:"
send "$password\r"
expect "\$"
send "$Mycmd\r"
当我执行此操作时,我无法获得任何输出。执行unix语句的正确语法是什么?我如何让它工作,以便我得到正确的rsize值作为输出?
答案 0 :(得分:0)
尝试使用ascii进行转义总是一个好主意,尝试使用\ 0442作为\ $ 2或尝试类似\\ $ 2的内容 。如果你在第二行插入'exp_internal 1'而没有引号,你也可以调试脚本找到你没有输出的原因。
答案 1 :(得分:0)
是否可以获得输出而无需添加"互动"声明
是的,确实如此。等待输出的其他语句也会这样做;你可以添加e。克。
expect -re "\n\[0-9]+"
到你脚本的末尾。