Общий подход правильный.Попробуйте это 1 :
▶ expect
expect1.1> set var /bin/sh
/bin/sh
expect1.2> exec sed -n "s%:$var\$%:/bin/bash%p" /etc/passwd
root:*:0:0:System Administrator:/var/root:/bin/bash
expect1.3> exec sed -n "s%:$var\$%:/bin/bash%p" /etc/passwd > /tmp/log
Анализ вашего сообщения об ошибке:
Error: sed: -e expression #1, char 75: unknown option to `s'
Обратите внимание, что sed получил не менее 75 символов - намного больше, чем в вашем примере кода.Помогает ли это вам понять, что пошло не так?Если нет, обновите код, который вы пытались использовать.
1 Обратите внимание, что ожидайте просто добавляет некоторые расширения в TCL, и у меня нет TCL на моем ноутбуке.