2012-09-09 36 views
0

我有,讓show-table[0],版畫0|-100|111當系統。使用expect腳本查找並返回一個值

我希望我的希望腳本接收$row作爲參數,並做到以下幾點:

  1. 發送show-table[$row]

  2. 的價值迴歸-100(100也會很棒)

以下是我已經試過:

set row [lindex $argv 0] 

expect { 
    "> " {send "show-table\[$row\]\n"} 
    timeout { exit 1 } 
} 

expect { 
    "\|*\|" {} 
    timeout { exit 1 } 
} 

exit $expect_out(0,string) 

2個問題:

  1. 我沒有設法使腳本找我傳遞給它的參數
  2. 我沒有管理使腳本只返回-100或100

什麼建議嗎?

回答

0
  1. 你傳遞參數給腳本的方式似乎是正確的。
  2. 發送您的命令後,您可以使用expect -re匹配命令的輸出:

    組行[LINDEX $ ARGV 0]

    期待{ 「>」{派「節目表[$行] \ n「} 超時{1號出口} }

    預計-re {\ d + \ |( - \ d +?)\ | \ d +} {把$ expect_out(1,字符串)}

    期望eof

,如果你想這個腳本輸出返回到外殼,簡單地從puts可以expect做到這一點,exit給這個腳本的退出狀態。

+0

非常感謝!只需要前添加「\」「[」和「]」,它做的工作:) – mvk

+0

其實,一個「\」之前先「[」是不夠的。 :) – leafei