다음과 같은 별칭을 작성하고 싶습니다.
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
원래 명령이 실패한 경우에만 최종 명령을 실행하려면 하위 쉘(또는 복합 블록)이 필요합니다 .