||를 사용한 후 종료 상태 코드를 전달합니다.

||를 사용한 후 종료 상태 코드를 전달합니다.

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

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원래 명령이 실패한 경우에만 최종 명령을 실행하려면 하위 쉘(또는 복합 블록)이 필요합니다 .

관련 정보