プロが教える店舗&オフィスのセキュリティ対策術

Bourne Shellでは$?で直前のコマンドのステータスを確認できるようですが、これとは逆にネストした上位シェルに$?を返す事はできますか?

aaaa.sh から bbbb.sh を呼び出しているとして、その呼び出した直後に$?でステータスを確認する場合、
bbbb.sh 側ではどのように戻り値をセットすれば良いですか?

A 回答 (7件)

話が込み入っているようですが・・・



単純に子プロセス(下位シェル)で、

exit 4

とすれば、親プロセス(上位シェル)で参照できます。
    • good
    • 0
この回答へのお礼

有難う御座いました。

お礼日時:2007/04/21 23:53

>既存のコードに書かれているコマンドの意味を調べるには十分でも、やりたい事が可能かどうか?


>可能ならどういうコマンドをどのように利用するのか?
>という目的先行の場合には十分でないからです。

まず、man sh を読んで全部頭に入れてください。もし入りきればそれで「やりたい事が可能かどうか?可能ならどういうコマンドをどのように利用するのか?」はわかるはず。

>この場合
>bbbb.shで
>exit $?
>としておき、
>aaaa.sh側で
>if $?
>then
>処理
>fi

>とするのでしょうか?

そもそも、「Bourne Shellでは$?で直前のコマンドのステータスを確認できる」を理解されてないようですが。
まず、子スクリプトのほうは上にお書きのとおりでOKです。
親スクリプトのほうは、直前のものがコマンドであろうが、子シェルスクリプトであろうが同じです。

if test $? = 0
then 成功のときの処理
else 失敗のときの処理
fi

test コマンドには [ という別名もあるので、
if [ $? = ]
でもかまいません。
    • good
    • 0
この回答へのお礼

>まず、man sh を読んで全部頭に入れてください。
>もし入りきればそれで「やりたい事が可能かどうか?可能ならどういうコマンドをどのように利用するのか?」はわかるはず。

たしかに、その通りかもしれませんが、
では法律について質問している人がいたら
「六法全書を全て頭に入れて下さい。そして過去の事例を合わせて考えれば分かるはずです」
と答えるのでしょうか?
 
>if test $? = 0
>then 成功のときの処理
>else 失敗のときの処理
>fi

>test コマンドには [ という別名もあるので、
>if [ $? = ]
>でもかまいません。

有難う御座います。参考になりました。

お礼日時:2007/04/21 23:58

違ったキーワードで検索すれば異なる結果が得られる可能性があるわけで、


そういった意図でお聞きしたのですが明らかにしたくないということであれば
無理強いはしません。

ということでわたしもわたしの自由を行使させていただきます。
    • good
    • 0
この回答へのお礼

結局のところ、
あたなのレスは「説教はしたいが答えは教えたくない」という事ですね。

それではタダのアラシです。

お礼日時:2007/04/22 00:00

参考までにどんなキーワードで検索したか補足してもらえませんか?



それから、
> 既存のコードに書かれているコマンドの意味を調べるには十分でも、やりたい事が可能かどうか?
> 可能ならどういうコマンドをどのように利用するのか?
> という目的先行の場合には十分でないからです。

ということなら、むしろネット上を探すよりは
Amazon.co.jp: UNIXシェルスクリプト逆引き大全333の極意―Linux,FreeBSD,Solaris,Mac OS X対応: 本: 中橋 一朗
http://amazon.jp/dp/4798008842

こういう本を用意しておいたほうがいいんじゃないでしょうか。

これのほかにも同様の趣旨の本があったような気もしますが
それも含めて自分の目で確かめてみてください。

ネット上にはピンポイントな情報ならあふれているでしょうけれども
体系的にまとめているようなところはあまりないと思います。

この回答への補足

>参考までにどんなキーワードで検索したか補足してもらえませんか?

ここは質問と回答やりとりをするところです。
掲示板の主旨からから脱線するので控えさせていただきます。

この場合
bbbb.shで
exit $?
としておき、
aaaa.sh側で
if $?
then
処理
fi

とするのでしょうか?


bbbb.shで
環境変数にexportしておいて
aaaa.sh側でその内容を確認する形でもいけそうですが、
それはあまり一般的な方法ではないでしょうか?

補足日時:2007/04/07 15:37
    • good
    • 0

まずは #2 で言われている通り man sh が基本でしょう. 普通の用途にはこれで十分.


ネットでも適当にキーワードを入れれば探せると思うんだけどなぁ.
とりあえず最初に見付かったのが
http://hemsidor.torget.se/users/d/Devlin/shell/m …

この回答への補足

ネットで適当にキーワードを入れれば、Bourne Shell以外のシェルのサンプルコードが大量にヒットして目的にあったサイトがなかなか見つからなかったりするのです。

補足日時:2007/04/07 01:05
    • good
    • 0

> Bourne Shellのマニュアルってどこかネット上にありますか?


なぜネット上?
man sh じゃ不足なんでしょうか。

まあネット上にもマニュアル、解説含め転がってはいますが。

この回答への補足

>なぜネット上?
>man sh じゃ不足なんでしょうか。

既存のコードに書かれているコマンドの意味を調べるには十分でも、やりたい事が可能かどうか?
可能ならどういうコマンドをどのように利用するのか?
という目的先行の場合には十分でないからです。

補足日時:2007/04/07 01:00
    • good
    • 0

マニュアルを読めばわかると思うんだけど exit.

この回答への補足

Bourne Shellのマニュアルってどこかネット上にありますか?

補足日時:2007/04/06 13:09
    • good
    • 0

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