我想在“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