Bash
如何獲取管道中特定命令的退出狀態?
我
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
,但是這種方法有什麼方法可以獲取退出 ststusmysqldump
嗎?
您可以使用 PIPESTATUS 變數來獲取管道每個元素的退出狀態。
if [ ${PIPESTATUS[0]} -ne 0 ];then echo "mysqldump Query executed with error !!" exit 1 fi