2016-10-11 39 views

回答

-1

你可以在你的HERE文檔中用變量替換硬編碼的8802嗎?然後你可以把整個testFunction放在一個循環中,爲每次迭代傳遞一個不同的端口。

+0

評論應該是發佈解決方案,而不是提問。你爲什麼不展示如何用變量替換它? – Barmar

0

嘗試使用環境變量。它很快速和骯髒,但它的工作原理:

#!/bin/bash 
function testFunction { 
    local TESTPORT=$1 
    expect << EOF 
spawn sshpass -f x ssh -p ${TESTPORT} [email protected] 
expect "$ " 
send -- "w\r" 
expect "$ " 
send "exit\r" 
EOF 
} 
testFunction 8802 
testFunction 8803 

我也用sshpass而不是在期望腳本中有ssh密碼。我正在用這個來測試這個想法。在這種情況下,文件「x」中包含密碼(並且設置了高度限制的權限)。