2009-10-28 74 views
1

我想創建一個expect腳本,通過telnet連接到服務器並執行一些授權。儘管我使用腳本參數有問題。基於男人,我預計這工作:期待參數處理

#!/usr/bin/expect -f 
spawn telnet $argv1 5038 
... 

不幸的是我回來can't read "argv1": no such variable。如何使這項工作?

+0

也許你應該問這個在serverfault.com – Graviton 2009-10-28 11:38:00

+1

爲什麼?這是一個關於expect/tcl編程的問題。 – viraptor 2009-10-28 11:40:08

回答

4

是一個Tcl列表保持的命令行參數,被索引從0開始你想:

[lindex $argv 0] 
+1

你贏了2分鐘:)謝謝。在男性中有一個例子提到了$ argv0,這讓我感到困惑。 – viraptor 2009-10-28 14:39:22

+0

所以我(這個例子困惑) – 2013-05-16 17:07:29

5

條命令行參數設置爲可變的argv列表,你可以使用LINDEX獲得元素從這個名單,所以如果第一個參數是遠程連接到主機,這樣做:

spawn telnet [lindex $argv 0] 5038 

殼牌提供的變量ShellsLINDEX in Lists

0

我得到了類似的錯誤can't read "argv0": no such variable,當我嘗試在proc中使用$ argv0。解決方案是使用$::argv0從全局名稱空間顯式訪問它。