테스트하지 않고 Bash에서 "그렇지 않은 경우"를 수행하는 방법은 무엇입니까?

테스트하지 않고 Bash에서 "그렇지 않은 경우"를 수행하는 방법은 무엇입니까?

"if not" 문에서 bash 함수의 반환 값을 사용하고 싶습니다. 다음은 예제 스크립트입니다:

#!/bin/bash

function myfunction () {
 if [ $1 = "one" ]; then
  return 1
 elif [ $1 = "two" ]; then
  return 2
 else
  return 0
 fi
}

if myfunction "two"; then
 # just using echo as an example here
 echo yep $?
else
 # just using echo as an example here
 echo nope $?
fi

스크립트가 "yes 2"를 에코하는 방식으로 "if myfunction "two"" 부분을 수정하는 방법이 있습니까? 이런 추악한 방법밖에 생각이 안 나네요. 어떻게 하면 이 문제를 더 잘 해결할 수 있나요?

답변1

if myfunction "two"의사코드는 입니다 if the myfunction return code is zero when run with a single argument "two". 비교( )를 반전하려면 와 사이에 를 추가 is not zero하면 됩니다 .!ifmyfunction

답변2

당신이 무엇을 요구하는지 잘 모르겠지만, 다음과 같습니다.

myfunction two; (( $? == 2 )) && echo yes || echo no

답변3

myfunction "two"
myvar=$?
if [ $myvar -gt 0 ]; then
 echo yep $myvar
else
 echo nope $myvar
fi

답변4

함수 내부에서 에코를 수행하지 않는 이유는 무엇입니까? 이는 간단해야 합니다.

myfunction() {
    case "$1" in 
        one) echo "nope 0" ;;
        two) echo "yep 2" ;;
    esac
}
myfunction one
myfunction two

관련 정보