如何在没有测试的情况下在 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

有没有办法以该脚本回显“是的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

相关内容