![파이프라인에서 특정 명령의 종료 상태를 어떻게 얻나요? [복사]](https://linux55.com/image/105336/%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%A2%85%EB%A3%8C%20%EC%83%81%ED%83%9C%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%96%BB%EB%82%98%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%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