Вы, вероятно, неправильно истолковываете то, что видите. Expect не разбивает строки на переменные в пробелах. Следующий простой скрипт оболочки просто печатает каждый аргумент, окруженный "> ... <". </p>
cat >mytest <<\!
#!/bin/bash
for arg;do echo -n " >$arg<"; done; echo
!
chmod +x mytest
Мы запускаем его из ожидаемого, используя переменную, которая содержит пробелы:
expect -f - <<\!
set myvar "a b"
spawn ./mytest v=$myvar
expect eof
!
Это вывод:
spawn ./mytest v=a b
>v=a b<
Хотя эхо-сигнал Команда spawn, напечатанная ожидаемо, предполагает, что для mytest
было 2 аргумента, а именно v=a
и b
, фактически скрипт оболочки видел только 1 аргумент v=a b
.
Это показывает, что первая часть вашего сценария, вероятно, в порядке, и вы должны искать проблему в другом месте. (Обратите внимание, что есть пример команды ovirt-aaa-jdb c -tool здесь , которая соответствует тому, что вы делаете. Она имеет ""
, потому что она запускается из оболочки, которая будет удалите эти кавычки, а не разбивайте на пробелы.)