Bash脚本用于读取' openssl help'

时间:2017-06-21 15:11:25

标签: string bash openssl

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

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

首先,我尝试阅读命令输出' openssl ciphers'。但我只得到了密码而不是密码命令。但是,如果我键入' openssl help'然后显示密码命令。问题是现在命令的输出没有保存在我的变量中。

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

这很有效。但不幸的是,$ CIPHER的内容并不是我所需要的。

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

这不起作用。变量CIPHER为空。为什么?

1 个答案:

答案 0 :(得分:1)

似乎openssl help内容会写入标准错误流stderr(2)而不是stdout(1)。建议将错误流(由文件描述符2表示)重新引导到标准输出(由文件描述符1表示)以解决问题。

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

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

了解原因$(..) is prefereed over legacy .. syntax for command substitution.