3つの異なるコマンドの出力が同じであることを確認するためにいくつかのBash-fooを理解しようとしています。これは、Bashスクリプトの数行で実行できます。私がやりたいことは、いくつかの凝ったシェルI/Oリダイレクトを使用して1行で可能かどうか疑問に思っています。
私がやりたいのは、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
key、cert、およびcsrが一致する場合、これら3つのコマンドはすべて、「(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 ]]
1つの問題は、私のプロトタイプが1つのコマンドから3行すべての出力を生成することですが、実際には&&
2、3回使用します。