ファイルを bash 変数に復号化し、それを zcat にパイプしてから、その mysql にパイプしようとしています。出力をファイルに送信することは、指定された要件であるため、オプションではありません。
私が持っているものは次のとおりです。
temp=$(gpg --batch --quiet --yes --passphrase=XXXXXX --decrypt file.sql.gz.gpg)
{ zcat preprocess.sql.gz; echo $temp | zcat; } | mysql -u$DB_USER -p$DB_PWD --host=$DB_HOST $DB_ID
応答は、正しく解凍された前処理ファイルであり、その後に次のものが続きます。
zcat: stdin is encrypted -- not supported
しかし、私がするとき:
gpg --batch --quiet --yes --passphrase=XXXXXX --decrypt file.sql.gz.gpg > tempfile.sql.gz
zcat preprocess.sql.gz tempfile.sql.gz | mysql -u$DB_USER -p$DB_PWD --host=$DB_HOST $DB_ID
期待どおりに動作します。ただし、前述したように、復号化されたファイルがサーバー上に長時間滞留することは望ましくないため (一部の mysl インポートには数時間かかります)、ファイルを書き込んでから削除することは最初の一歩ではありません。
問題は、gpg がファイルと比較して $temp 変数に異なるものを保存するのはなぜですか? そして、私はそれについて何ができますか