重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

シェルスクリプト(sh)の関数の戻り値とtestコマンドによる判定の仕方が分かりません。

--------------------------------------------------
#!/bin/sh
. GetYesNo.sh          #外部シェルスクリプトを読み込んで...
GetYesNo $1           #このGetYesNoの戻り値は0か1を出力するようにする。

if[ ??? -eq 0 ]; then      #"???"の部分に何を入力すれば良いか分かりません。
echo "真(0)です。"
else
echo "偽(0以外)です。"
fi
--------------------------------------------------

戻り値が0か1しか出力しない外部シェルスクリプトを読み込んで、その戻り値をtestコマンドを利用して、0か1のどちらかを判定して、それぞれの出力を出したいけれど、どうやって出来ますでしょうか。
色々な方法を試してみましたが、ダメでした。
上記のコードの書き間違いがあると思いますが、あったらご指摘をお願いします。

A 回答 (1件)

GetYesNo.shの中で GetYesNo()が定義されていて、return 0 か return 1で戻り値を返す、ということでよろしいでしょうか?



方法1) 特殊変数$?の利用

GetYesNo $1
if [ "$?" -eq 0 ] ; then

直前のステータスなので、間に他のコマンドを実行しているとそちらの値になる

GetYesNo $1
echo "$?" # $?=GetYesNo $?の戻り値
if [ "$?" -eq 0 ] ; then #$?= echo "$?"の戻り値

方法2) GetYesNoを直接使用
test 命令( とその省略形の[ )は不要

# GetYesNo $1 #ここにはいらない
if GetYesNo $1 ; then
    • good
    • 0
この回答へのお礼

大変参考になりました。
本当にありがとうございます。
あっさりと解決できました。
もちろん、方法1と方法2とも両方とも解決できました。

方法2のtest命令の不要の件ですが、そういう方法もあったのですね。
こんな便利な方法もあることは全然知りませんでした。

お礼日時:2010/03/06 21:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!