Итак, у меня в настоящее время есть скрипт bash, который предполагает, что ему нужно отправить массив команд в консоль. Как видно ниже, я использую IFS для их разделения на новой строке, и затем я помещаю их в переменную cmds_eval с сценарием ожидания. Тогда я надеялся использовать $ cmds_eval, как показано ниже, чтобы сразу отправить кучу команд в сценарий ожидания. Это не работает. Кажется, $ cmds_eval не интерпретируется так, как я думал. Каким будет подходящий способ сделать это? Я не верю, что есть в любом случае, чтобы сделать Еогеасп внутри ожидать сценария, но если есть ... Сценарий ниже упрощена конечно ...Работа с массивами 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