我试图找出一些 Bash-foo 来检查三个不同命令的输出是否相同。我可以用几行 Bash 脚本来做到这一点,我只是想知道我想做的事情是否可以在一行中通过一些花哨的 shell I/O 重定向来实现。
我想要做的是检查 SSL 证书是否与特定的密钥和证书签名请求匹配。
命令如下所示:
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5
如果密钥、证书和 csr 匹配,所有这三个命令都应该输出相同的输出,例如:“(stdin)= 95ce143e8418cf8a4f7dd718983ed4eb”。
这是一个原型:
[[ $(echo -e "blah\nblah\nblah" | uniq | wc -l) -eq 1 ]]
但我无法从那里得到最终产品。这不起作用:
[[ $(openssl x509 -noout -modulus -in certificate.crt | openssl md5 && openssl rsa -noout -modulus -in privateKey.key | openssl md5 && openssl req -noout -modulus -in CSR.csr | openssl md5 | uniq | wc -l) -eq 1 ]]
一个问题可能是我的原型从一个命令生成了所有三行输出,但实际使用&&
了几次。