||를 사용한 후 종료 상태 코드를 전달하세요.

||를 사용한 후 종료 상태 코드를 전달하세요.

다음과 같은 별칭을 작성하고 싶습니다.

alias baz="false || echo bar"

(실제로는 false실패할 수 있는 명령입니다.) 하지만 실패 상태 코드를 다음 호출자에게 전달하고 싶습니다. 즉, 현재 동작은 다음과 같습니다.

$ false; echo $?
1
$ false || echo foo; echo $?
0

나는 그것을 false || echo foo할 때를 제외하고 모든 면에서 동일하게 동작하는 다른 작업을 수행하고 싶습니다 .echo $?1

노트:나는 그 echo foo비트가 기본적으로 항상 성공할 것으로 기대합니다.

답변1

명령의 반환 값을 저장하는 함수는 복잡하지 않습니다.

f() {
    some-command-that-can-fail
    retval=$?
    if [ "$retval" != 0 ] ; then
         echo the command failed
    fi
    return $retval
}

정확한 반환 값에 신경 쓰지 않고 0이 아닌 반환 코드만 원하는 경우 다음이 작동합니다.

somecmd || ( echo it failed ; false )

false원래 명령이 실패한 경우에만 최종 명령을 실행 하려면 서브셸(또는 복합 블록)이 필요합니다 .

관련 정보