Как передать переменную в команду exec в ожидаемом скрипте? - PullRequest
0 голосов
/ 17 января 2019

Цель сценария - прочитать зашифрованный файл ".pass" и расшифровать файл с помощью PublicKey, и расшифрованный вывод должен быть сохранен

puts $output

должен показать расшифрованный пароль.

PublicKey будет меняться каждый раз в зависимости от моей логики генерации ключей, поэтому я хотел, чтобы она была установлена ​​в качестве переменной

#!/usr/bin/expect
set value "PublicKey"
set output [ exec sh -c {cat .pass | cut -d'&' -f1 | openssl base64 -d | openssl enc -d -rc2 -k "$value" } ]
puts $output

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Tcl {фигурные скобки} похожи на 'одинарные кавычки' оболочки - расширение переменной не выполняется.

Вам нужно использовать разные цитаты:

set value "PublicKey"
set cmd "cat .pass | cut -d'&' -f1 | openssl base64 -d | openssl enc -d -rc2 -k $value"
set output [ exec sh -c $cmd ]
puts $output
0 голосов
/ 17 января 2019

В вашем файле есть типографские кавычки - вам нужно вместо этого использовать только ' и " (прямые кавычки) для строк кавычек .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...