![パイプラインで特定のコマンドの終了ステータスをどのように取得しますか? [コピー]](https://linux33.com/image/105336/%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E7%B5%82%E4%BA%86%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%8F%96%E5%BE%97%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
while
スクリプトでこのループを実行してそれをインポートして圧縮していますが、mysqldump
スクリプトが存在しない場合はそのスクリプトが必要です。私が試したことは次のとおりです。exit
table
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
が、終了ステータスは提供しませんmysqldump
。mysqldump
そこで使用しないと終了ステータスを取得できることはわかっていますが、gzip
この方法の終了ステータスを取得する方法はありますかmysqldump
?
答え1
PIPESTATUS変数を使用して、パイプラインの各要素の終了ステータスを取得できます。
if [ ${PIPESTATUS[0]} -ne 0 ];then
echo "mysqldump Query executed with error !!"
exit 1
fi