저는 다음과 같이 script.sh를 작성하고 있습니다.
ls a || ls > /dev/null || echo "both command fails"; exit 3
echo 5 # not showed up
exit 3
command1과 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