openssl中的命令替换

时间:2018-07-15 18:33:36

标签: shell openssl solaris ksh solaris-10

尝试在ksh中运行它:

echo -n "string to encode" |
openssl enc -aes-128-cbc -a -salt -pass file:<(print -n 'somepassword')

保持错误:

unknown option '/dev/fd/10'

我做错了什么,我已经搜索了但没有答案。

1 个答案:

答案 0 :(得分:2)

在bash和ksh中,进程替换的工作方式不同。 Bash将结果附加到当前单词,ksh创建一个新单词:

$ cat testcase
showargs() { printf 'Arg: %q\n' "$@"; }
showargs file:<(echo -n foo)

$ bash testcase
Arg: file:/dev/fd/63

$ ksh testcase
Arg: file:
Arg: /dev/fd/3

我不知道ksh是否支持在openssl要求的形式上构造参数,因此要么使用其他密码传递机制之一,要么使用临时文件,手动打开自己的fd,要么切换shell。 / p>

PS:-d表示“解密”。