所以我現在有一個bash腳本,使用期望需要發送命令數組到控制檯。從下面可以看出,我使用IFS將這些分割到換行符上,然後使用expect腳本將它們放入一個變量cmds_eval中。然後我希望使用如下所示的$ cmds_eval將一堆命令一次發送到期望腳本中。這不起作用。看起來$ cmds_eval並不像我想的那樣被解釋。什麼是適當的方式來做到這一點?我不相信這是無論如何做的expect腳本里面的foreach,但如果有...下面的腳本已被簡化,當然...在期望腳本中使用bash數組
cmds_eval=""
OLDIFS=$IFS
IFS="\n" read -ra CMDS <<< "$cmds"
for c in "${CMDS[@]}"; do
cmds_eval+="send -- \"$c\\r\"\r\n"
cmds_eval+="expect \"*myprompt*\"\n"
done
IFS=$OLDIFS
expect <<- DONE
spawn my ssh session
expect "*foobar:*"
send -- "foobar\r"
expect "*foobar:*"
$cmds_eval
send -- "foobar\r"
DONE
CMDS看起來是這樣的:
cmds="pwd
mv myfile ..
ls"
您可以顯示腳本的早期部分和$ cmds的值嗎? – konsolebox
我已經添加了一個cmds樣子的例子...它實際上經歷了很多,但是這應該足夠好... –
我希望你能檢查我的帖子謝謝。 – konsolebox