2017-06-21 11 views
1

bashコマンド 'openssl help'の出力を読み込み、後で処理するために文字列変数に入れようとしています。'openssl help'の出力を読み込むためのBashスクリプト

具体的には、すべてのCipherコマンドをテストしたいと思います。

まず、 'openssl ciphers'コマンドの出力を読み込もうとしました。しかし、私は暗号だけを取得し、暗号コマンドは取得しません。しかし、 'openssl help'と入力すると、暗号コマンドが表示されます。問題は、今、コマンドの出力が私の変数に保存されていないということです。

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

これは機能します。しかし、残念ながら$ CIPHERの内容は私が必要とするものではありません。

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

これは機能しません。変数CIPHERは空です。なぜ??

+0

あなたは 'のopenssl ciphers'または'のopenssl help'をしたいか、なぜ

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

を参照してください? – jww

答えて

1

openssl helpの内容は標準エラーストリームstderr(2)の代わりにstdout(1)のように表示されます。エラーストリーム(ファイル記述子2で表される)を標準出力(ファイル記述子1で表される)にリダイレクトして問題を修正することを提案してください。

出力には複数行のストリームが含まれているため、適切な二重引用符を使用して、コマンド置換をバッククォート(旧式のテクニック)に囲むことをお勧めします。 $(..) is prefereed over legacy .. syntax for command substitution.

+0

[コマンドライン "usage"をstdoutまたはstderrに出力する必要がありますか?](https://stackoverflow.com/q/2199624/608639)を参照してください。 – jww