||
방금 명령이 성공적으로 완료되었는지 확인하기 위해 연산자를 사용하는 것이 작동하지 않는다는 것을 깨달았습니다 ||
.
다음은 내 스크립트의 플레이입니다. ping이 반환되기를 기다리고 있으며 특정 시간 내에 반환되지 않으면 두 가지 명령을 실행해야 합니다(실제 스크립트에는 정리용 함수와 청소용 함수 두 개가 있습니다). 인쇄 오류와 종료된 오류는 결합할 수 없습니다.)
/bin/bash
echo "start"
timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' || echo "unsuc"; exit 1
echo "suc"
exit 0
내 문제는 ping이 성공하면 스크립트 exit 1
도 이 작업을 시도했지만 echo "unsuc" && exit 1
동일한 동작이 발생한다는 것입니다.
ping 명령이 실패하면 어떻게 두 명령을 실행할 수 있습니까?
답변1
그룹 명령(일명 "목록")을 사용하세요 ... || { echo "unsuc" ; exit 1 ; }
. 예: .
이 섹션을 보고 man bash
검색하세요 Compound Commands
.
또는 다음 if
과 같은 문을 사용하십시오.
#!/bin/bash
echo "start"
if ! timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' ; then
echo "unsuc"
exit 1
fi
echo "suc"
exit 0