첫 번째 명령이 실패하면 두 명령을 모두 실행합니다.

첫 번째 명령이 실패하면 두 명령을 모두 실행합니다.

저는 다음과 같이 script.sh를 작성하고 있습니다.

ls a || ls > /dev/null || echo "both command fails"; exit 3
echo 5 # not showed up

exit 3command1과 command2가 모두 실패한 경우에만 실행 하고 싶습니다 . 하지만 ls > /dev/null문제가 없더라도 exit 3여전히 해고되어 echo 5나타나지 않는 것 같습니다 .

이 문제를 해결하기 위해 제가 할 수 있는 일이 있나요?

답변1

문제는 ||바인딩이 그것보다 더 빡빡해서 ;첫 번째 줄이 두 개의 명령으로 구성된다는 것입니다. 첫 번째는 복합 명령이고 ls || ls || echo두 번째는 바로 그 것입니다 exit 3. meuh의 의견에서 언급했듯이 다음과 같이 작성해야합니다.

ls a || ls > /dev/null || { echo "both command fails"; exit 3; }
echo 5 # not showed up

관련 정보