설명서를 읽고 따라하세요.이 답변, 간단한 예를 들어 테스트하고 싶습니다.
test_1.sh
#!/usr/bin/bash
let x=1/0
echo $x
test_2.sh
#!/usr/bin/bash
printf "\nThis is 2\n"
그러나 두 제어 흐름 구현 모두 실패합니다. test_1을 실행하고, 실패하면 test_2를 실행합니다.
# Just errors on line 1 of course
./test_1.sh
if [ $? -ne 0 ]; then
./test_2.sh
fi
또한 실패합니다:
./test_1.sh || ./test_2.sh
여러 스크립트 간의 흐름을 제어하는 방법에 대한 팁이 있나요?
답변1
귀하의 의견을 토대로:
test_1.sh
성공(반환 코드 0) 또는 실패(0이 아닌 모든 것)를 초래할 수 있는 이와 같은 프로시저가 있습니다 . 나는 이와 같은 것이test_2.sh
전자의 경우에만 실행되기를 원합니다.
질문의 스니펫과 반대되는 내용을 원합니다.
./test_1.sh
if [ $? -ne 0 ]; then
./test_2.sh
fi
test_2.sh
실패하라는 지시가 있으면 실행합니다 test_1.sh
.
./test_1.sh || ./test_2.sh
test_2.sh
성공을 나타내는 경우 실행하려면 test_1.sh
다음 중 하나가 작동합니다.
./test_1.sh
if [ $? -eq 0 ]; then
./test_2.sh
fi
if ./test_1.sh; then
./test_2.sh
fi
./test_1.sh && ./test_2.sh
바라보다쉘의 제어 및 리디렉션 연산자는 무엇입니까?더 알아보기.
test_1.sh
0으로 나누더라도 현재는 항상 성공을 나타냅니다. 바라보다0으로 나누기를 무시하거나 캡처합니다.더 알아보기.