if myfunction "two"
no pseudocódigo é if the myfunction return code is zero when run with a single argument "two"
. Se você quiser reverter a comparação ( is not zero
), basta adicionar um !
entre if
e myfunction
.
Eu gostaria de usar o valor de retorno de uma função bash em uma instrução 'if not'. O seguinte é um script de exemplo:
#!/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
Existe uma maneira de modificar a parte 'if myfunction "dois"' de uma forma que este script ecoa 'sim 2'? Eu só consigo descobrir esse jeito feio. Como posso resolver isso de uma maneira melhor?
if myfunction "two"
no pseudocódigo é if the myfunction return code is zero when run with a single argument "two"
. Se você quiser reverter a comparação ( is not zero
), basta adicionar um !
entre if
e myfunction
.
Não tenho certeza do que você está perguntando, mas:
myfunction two; (( $? == 2 )) && echo yes || echo no
myfunction "two"
myvar=$?
if [ $myvar -gt 0 ]; then
echo yep $myvar
else
echo nope $myvar
fi
Por que não fazer o eco de dentro da função? Isso deve ser direto:
myfunction() {
case "$1" in
one) echo "nope 0" ;;
two) echo "yep 2" ;;
esac
}
myfunction one
myfunction two
Tags bash shell-script