如何在Expect脚本中将变量传递给exec命令?

时间:2019-01-17 05:44:43

标签: shell openssl expect

该脚本的目的是读取加密的文件“ .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 :(得分:0)

文件中有typographic quotation marks-您只需要对quote strings使用'"(直引号)即可。

答案 1 :(得分:0)

Tcl {大括号}就像shell的“单引号”一样-在其中不执行变量扩展。

您需要使用其他引号:

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