用于读取'openssl help'输出的 Bash 脚本



我尝试读取bash命令'openssl help'的输出并将其放入字符串变量中以供进一步处理。

准确地说,我想测试所有密码命令。

首先,我尝试读取命令"openssl密码"的输出。但我只有密码,没有密码命令。但是,如果我输入"openssl 帮助",则会显示密码命令。问题是现在命令的输出没有保存在我的变量中。

CIPHER=`openssl ciphers`
echo "Output:"
echo $CIPHER

这行得通。但不幸的是,$CIPHER的内容不是我需要的。

CIPHER=`openssl help`
echo "Output:"
echo $CIPHER

这行不通。变量 CIPHER 为空。为什么??

似乎

openssl help内容确实被写入标准错误流stderr(2)而不是stdout(1)。建议将错误流(由文件描述符 2 表示(重定向到标准输出(由文件描述符 1 表示(以解决此问题。

由于输出包含多行流,因此建议使用适当的双引号将$(..)命令替换括在反引号(过时的技术(上。

sslOutput="$(openssl help 2>&1)"
printf "%sn" "${sslOutput}"

了解为什么$(..)比旧版..语法更受欢迎。

最新更新