パイプラインで特定のコマンドの終了ステータスをどのように取得しますか? [コピー]

パイプラインで特定のコマンドの終了ステータスをどのように取得しますか? [コピー]

whileスクリプトでこのループを実行してそれをインポートして圧縮していますが、mysqldumpスクリプトが存在しない場合はそのスクリプトが必要です。私が試したことは次のとおりです。exittable

while read TABLES; do
    sudo mysqldump $DB $TABLES | gzip -f > $DB.$TABLES.sql.gz
    if [ $? != 0 ]; then
        echo "mysqldump Query executed with error !!"
        exit 1
    fi
done < file

ただし、これは終了ステータスを提供しますgzip -fが、終了ステータスは提供しませんmysqldumpmysqldumpそこで使用しないと終了ステータスを取得できることはわかっていますが、gzipこの方法の終了ステータスを取得する方法はありますかmysqldump

ベストアンサー1

PIPESTATUS変数を使用して、パイプラインの各要素の終了ステータスを取得できます。

if [ ${PIPESTATUS[0]} -ne 0 ];then
        echo "mysqldump Query executed with error !!"
        exit 1
    fi

おすすめ記事