if else then 바로 가기의 조건으로 함수 반환을 사용하는 방법은 무엇입니까?

if else then 바로 가기의 조건으로 함수 반환을 사용하는 방법은 무엇입니까?

어떤 경우에는 함수를 실행하고 호출자에게 반환해야 하는데 이것이 제게는 효과적입니다.

if tst; then
    echo "success"
else
    echo "failure"
fi

function tst () {
    return 0;
}

그러나 바로가기 구문을 사용하면 이 작업을 수행할 수 없는 것 같습니다. if [[ tst = true ]] 또는 if it = "0" 테스트를 포함하여 다음 명령문의 다양한 조합을 시도했지만 알아낼 수 없습니다.

[[ tst ]] && echo "success" || echo "failure"

bash 단축 구문을 사용하여 if 조건에서 함수를 테스트하는 올바른 방법은 무엇입니까?

답변1

를 사용한다고 가정하고 A && B || C함수를 직접 호출하면 됩니다.

tst && echo "success" || echo "failure"

다음을 사용하려면 종료 값을 사용해야 합니다 [[.

tst
if [[ $? -eq 0 ]]
then 
    ...

답변2

(이것은 실제로 답변이 아니며 더 많은 의견입니다)

a && b || c단축키 에 주의해야 합니다 .

  • a성공이 반환 되면 b실행
  • b나중에 종료 상태가 반환되면 이 역시 c실행됩니다.
$ [[ -f /etc/passwd ]] && { echo "file exists"; false; } || echo "file does not exist"
file exists
file does not exist

if a; then b; else c; fic에 의존하지 않기 때문에 이 점에서는 더 안전합니다 b.a

$ if [[ -f /etc/passwd ]];then { echo "file exists"; false; }; else echo "file does not exist"; fi
file exists
$ echo $?
1

관련 정보