"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