2011-04-19 59 views
1

我在寫我的第一個expect腳本,所以我可能失去了一些東西很明顯,但我發現下面頗令人費解:如果我運行預期,並使其高管東西EXEC不工作在expect腳本

$ expect 
expect1.1> exec echo a 
a 
expect1.2> 
$ cat > test.exp 
exec echo a 
$ expect test.exp 
$ 

手動,它的作品。如果我在腳本中放入相同的命令,它不起作用。這是怎麼回事?

回答

5

請注意,期望本質上是Tcl的延伸。 Tcl的exec執行外部命令,捕獲輸出並將其作爲值返回 - 它的確如此,不是發送它到標準輸出,除非你指示它。但是,作爲便利,Tcl(或期望)會話將輸出打印到標準輸出

你的腳本應該是:

puts [exec echo a] 
# or 
set output [exec echo a] 
puts $output 

我假設「呼應了」是一個比較複雜的外部命令的佔位符。如果你只是想打印的東西:如果你是新來的Tcl

puts "this is something" ;# the Tcl way 
send_user "this is too\n" ;# the expect way 

以及然後期望你應該learn Tcl第一。

+0

感謝您的解釋。你是對的,我也是Tcl的新手。坦率地說,我不想學習如何在Tcl中編程;我只是想解決一個實際問題,並期望聽起來像是這個工作的正確工具。也許這種努力更適合superuser.com。 – LaC 2011-04-20 10:30:01

+0

@LaC,我建議學習Tcl(它不需要很長時間),因爲它會讓你期望的編程*噸更容易。 – 2011-04-20 10:56:33

+0

還有一件事:不要用「」來包裝命令。否則,它會失敗。至少,它在我的情況下失敗了。 – 2012-11-19 06:44:24