"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
하면 됩니다 .!
if
myfunction
답변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