私は現在、POSIXシェルスクリプトでこれを行っています。
success=false
pv --wait "$input_filename" | openssl enc -aes-256-cbc -d -salt -out "$output_filename" && success=true
if [ "$success" = "true" ]
...
問題は、これを正しく行うかどうかはよくわかりません。
たとえば、そのアプローチと$?
をチェックするだけの違いはわかりません。
なぜ私は気にしますか?
まあ、 ShellCheck.net が私に警告したので:
SC2181 終了コードを直接確認します。 'if mycmd;'、間接的に$?ではありません。
あなたが投稿したリンクによると、それは次のようなものになるはずです:
if pv --wait "$input_filename" | openssl enc -aes-256-cbc -d -salt -out "$output_filename"; then
code for true
else
code for false
fi
私のテストでは、これはパイプラインの問題である可能性があります。opensslを使用すれば問題ないと思いますが、cat
やecho
パイプラインの最後のコマンドは成功して終了するため、常に成功として扱われると思います。
成功時または失敗時に実行するコマンドが1つしかない場合は、次のようなものも機能する可能性があります。
command && code for success
または
command || code for failure