Передача переменной в команду sed в tcl - PullRequest
0 голосов
/ 22 апреля 2019

У меня возникла проблема, когда я пытаюсь подставить переменную в команду sed при ее выполнении в оболочке TCL.Ниже я попробовал.

set variable 5 
exec  sed "s/test1\$/test1;test1 $variable/g" file1 > file2

Я вижу ниже ошибку.Ошибка: sed: -e выражение # 1, символ 75: неизвестная опция для `s 'Используйте error_info для получения дополнительной информации.(CMD-013)

Я пробовал некоторые ссылки на переполнение стека, но это не помогло. Использование переменной в команде sed, вызываемой из сценария Tcl

1 Ответ

2 голосов
/ 22 апреля 2019

Общий подход правильный.Попробуйте это 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 на моем ноутбуке.

...