2016-08-12 16 views
0

序列:我如何可以調用期望腳本我有一個expect腳本,看起來像參數

#!/usr/bin/expect 
set path_start [lindex $argv 0] 
set host [lindex $argv 1] 
spawn ssh [email protected]$host telnet jpaxdp 
expect {\-> } 

set fh [open ${path_start}${host} r] 
while {[gets $fh line] != -1} { 
    send "$line\r" 
    expect {\-> } 
} 
close $fh 

send "exit\r" 
expect eof 

,我這樣稱呼它./script.sh cmds_ cc1,現在我的主機編號1 - 8,我試圖調用腳本就像./script cmds_ cc[1-8]但作爲腳本解釋主機[1-8]作爲參數,表明我沒有工作:

spawn ssh [email protected][1-8] telnet jpaxdp 
ssh: Could not resolve hostname cc[1-8]: Name or service not known 
couldn't open "cmds_cc[1-8]": no such file or directory 
    while executing 
"open ${path_start}${host} r" 
    invoked from within 
"set fh [open ${path_start}${host} r]" 
    (file "./script.sh" line 7) 

我怎樣才能使這項工作?

+1

這是一個Expect腳本,而不是bash腳本。 – Barmar

+0

可能有一個命令行實用程序,它將遞歸地執行這樣的調用。我會推薦另一個腳本,如果快速谷歌搜索沒有找到你任何東西從Linux。 – BrandonM

回答

3

cc[1-8]是文件名通配符,它​​查找與該模式匹配的文件。如果沒有,通配符本身保存在參數列表中。要獲得一系列數字,請使用cc{1..8}。要重複運行該命令,您需要一個for循環。

for host in cc{1..8} 
do 
    ./script.sh cmds_ "$host" 
done 
相關問題