종료 코드에 대한 부작용 없이 선택적 작업을 실행하는 관용적 bash 방법

종료 코드에 대한 부작용 없이 선택적 작업을 실행하는 관용적 bash 방법

스크립트는 테스트 결과와 함께 종료되는데 이는 호출자의 관점에서 볼 때 바람직하지 않습니다. 어떻게 구현해야 합니까?

#!/bin/bash
test -n "" && echo "test passed"

답변1

명시적인 내용을 추가하세요.

exit 0

오류가 보고되는 것을 원하지 않으면 스크립트 끝에 이를 추가하세요.

다음과 같이 할 수도 있습니다.

#! /bin/sh -
ret=0

cmd || ret=$? # we care about the failure of cmd

test -n "" && echo test # we don't care about the failure of test or echo

exit "$ret"

구체적인 예를 들어 다음과 같이 다시 작성할 수 있습니다.

test -z "" || echo test passed

(실패하더라도 오류는 계속 보고되지만 echo문제가 발생했음을 나타내므로 보고하는 것이 좋습니다.)

또는:

test -n "" && echo test passed || : ignore

:명령은 항상성공종료 상태.

관련 정보