質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Q&A

3回答

2442閲覧

関数の返り値を、成功時には0、エラー時には1にするのは慣例なのでしょうか?

iii

総合スコア29

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

0グッド

0クリップ

投稿2019/01/16 08:04

仕事で、1人でできるレベルの小規模な自動化システムを開発しています。言語はシェルスクリプトを使用しています。

詳細設計書を作成するにあたり、参考のため他の人が作成した詳細設計書を確認しているのですが、
どの関数も処理が成功した時には返り値0、失敗した時には返り値が1となっています。

処理が失敗した際にだけ特定の処理を行いたい場合に、返り値を1にするというのは理解できます。
(if [$? -ne 0]で返り値が0ではない場合にだけエラー処理を行うというように)

しかし、特にそのような事が無い場合にreturn 1というように返り値を指定する必要はあるのでしょうか?

詳細設計書の関数の項目は以下の4つがあり、返り値について明記する必要があるようです。
・役割
・引数
・返り値
・機能

他の人の詳細設計書は、
返り値0:処理が成功
返り値1:処理が失敗
となっているのに、

自分の詳細設計書は
返り値0:処理が成功、処理が失敗
となっているのはもしかして違和感があるのではないかと思い、質問させて頂きました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/01/16 08:18

失敗した事を呼び出し元に伝える必要がないケースということでしょうか?具体的なイメージが湧きませんが。
guest

回答3

0

シェルスクリプトに書くコマンドの返り値は、成功時に0、失敗時やエラー時に非0と決まっています。

シェルの関数は、いくつかのコマンドをまとめて実行するのを、あたかも1つのコマンドのように書けるという機能なので、関数の返り値も単独のコマンドに合わせるのが普通です。

つまり、成功は0で、失敗やエラー時に非0(1か2か3か、、、)です。失敗やエラーの内容によって、1,2,3などと決めます。
例:
0 → 処理が正常に完了した
1 → 処理を実行したが失敗した
2 → 引数の不正で処理を実行しなかった

投稿2019/01/25 05:49

otn

総合スコア84559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

違和感だらけです。

返り値0:処理が成功、処理が失敗
と書くのであれば、
戻り値:成功(0)、失敗(1)
の方が設計書として残す場合、分かり易いです。
この場合ですと「他の数字に関しては今後の更新で増えたりするのかな」と
思わすこともできますので、非常に重宝します。

言語によってはないですが、一番いいのはenumですね。

しかし、一番思ったのは戻り値がbool型の場合、
引数はtrueが成功、falseが失敗にしておいた方が直感的で分かり易いという点です。

投稿2019/01/16 08:22

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/01/25 05:40

シェルスクリプトの関数の話ですよ。
stdio

2019/01/25 05:48

いろいろやってるからすっかり忘れてた。 シェルスクリプトならenumなんてありませんね。
guest

0

もし、「他の人」 = 「同じ現場で働いている上司やチームメンバー」のことを指すのであれば、
返り値は0か1で返すという決まりがその現場であるのかもしれません。

近くに詳細設計書を設計した人がいるのであれば聞いてみるとよいとおもいます。

ですが詳細設計書は現場によって異なるので、他の人=全世界で詳細設計書を作ったことがある人
となるのであれば、話は変わってきます。

ですがおそらく同じ現場の人の詳細設計書を見ての質問でしょうから、
返り値は失敗=1にしておいた方が安全ではないでしょうか。

今失敗する予定はなくとも、後々の修正で失敗したときの処理を追加することになるかもしれませんし。

自分がこうしたほうがいいと思ったから良かれと思ってしたことが現場だと問題になることが多々あります。
返り値をどうしても設定したくない理由がない限りは慣例通りに沿うのが安全かと。

投稿2019/01/16 08:31

azuapricot

総合スコア2341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問