![如何在没有测试的情况下在 Bash 中执行“如果不是”?](https://linux22.com/image/32686/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%B5%8B%E8%AF%95%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%9C%A8%20Bash%20%E4%B8%AD%E6%89%A7%E8%A1%8C%E2%80%9C%E5%A6%82%E6%9E%9C%E4%B8%8D%E6%98%AF%E2%80%9D%EF%BC%9F.png)
我想在“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
) 你可以简单地在和!
之间添加一个。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