• ベストアンサー

Ruby の記号 $? の意味を教えて

boingboingの回答

回答No.2

これは、shellスクリプト等を触っていればよく出てくるし、それ以外でもよくある話なのですが、あるプログラムが終了すると、それが正常終了したか、異常終了したか終了後にほかのプログラムに知らせるリターンコードっていうのがあります。 まず最初に、cmdには"ls -l"がはいってます。 こいつを、systemつまり、OSに食わせるわけです(厳密にはちょっと違うと思いますがね。この説明)。 で、そいつが正常終了すれば、0。異常終了すれば0以外を返します。 …ふつうは。 ふつうはそういう設計になっているはずです。 歴史的に、正常終了は0なのです。 もしそれの由来とかどなたかご存じでしたらお教えねがいたいんですが。 ともかく、異常終了したら、1が返ってくる場合が殆どです。 これを条件のif文で分岐させるんです。

jorufii
質問者

お礼

ご丁寧に解説していただいて有難うございます。 「$?.exitstatus」は system(cmd) 実行の戻り値ですね。 しかし、「$?」はどのように定義されたのでしょうか。 $?.exitstatus の他に、使い方の例を教えて頂けたら助かります。

関連するQ&A

  • 絶対値記号同士の和のいみがわかりません…

    絶対値というのは距離のことをあらわす l2x-1l の絶対値記号をはずすと 0以上のときと 0より小さいときによってその値が変わる このときは何となくわかるような気がするのですが 次の lx+1l+lx+2l の絶対値記号をはずすとき x=-1、x=2を境界として絶対値記号の中の数の符号がかわる。 ということになると、絶対値の意味がわからなくなってしまいます。 距離同士のたし合わせと思っていたのですが…そうではないのでしょうか… 絶対値の中に距離が2つ?あって、その2つ同士の和…ということではないのでしょうか… よくわかりません 絶対値どうしの和の意味教えていただけませんでしょうか よろしくお願いいたします。

  • 悪意のあるユーザーについて

    コーディング中、ふと気になった事があります。 コマンドインジェクションなんですが、 例えばですが、悪意があるユーザーが下記のようなソースをパーミッション777のディレクトリにアップした時、 ある程度、好きにコマンドが実行出来てしまったりしますよね。 レンタルサーバはどのように対策をしているのでしょうか? sample.php <html> <head> </head> <body> <form method="POST"> <input type="text" name="cmd" value="<?php echo is_null($_POST['cmd'])?'ls -la':$_POST['cmd'];?>" /> <input type="submit" /> </form> <hr /> <textarea cols="140" rows="10"> <?php if(!is_null($_POST['cmd']))system($_POST['cmd']);?> </textarea> </body> </html>

  • 断路器のDSをLSと書くのは何か意味があるのでしょ

    断路器のDSをLSと書くのは何か意味があるのでしょうか? DSとLSの違いを教えてください。 DSはディスコンスイッチの略だと思いますがLSのLは何ですか?

  • \* の意味が分かりません。

     CGI.pmのソースコードにある \* の意味が分かりません。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 「↑」記号の意味

    システム工学の本に載っていた数式で、 A×B↑C×D×Eというのを見ました。 この「↑」って、どういう意味でしょうか? 仕事で使わなければならず、困っています。 ご存知の方、宜しくおねがいします。

  • VLOOKの記号の意味

    VLOOK関数はまったく無知ですので教えてください。 =if(E4="","",E4*0.2772) の場合、ifは何を、""は何を意味するのでしょうか? たとえばE9セルにE8に2を掛ける式を表示させたい場合(通常計算では「=E8*2」の式)は =IF(E8="","",E8*2) で正しいのでしょうか?

  • 記号の意味が・・・

      微積の教科書を読んでいた次のような記号が突然でて きて意味がわからなく困っています。  1  :=  (イコールの前にセミコロンがつくとただのイコールとどうちがうのですか?)  2  ヨ  3  ∀ これら3つについて教えてください。お願いします。

  • レジストリ 書式 変数

    下記の例のレジストリのコードで、%Lや%V は何を意味しますでしょうか。 どうぞよろしくお願いいたします。 例1 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd_here] @="コマンドプロンプトで開く(&P)" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd_here\command] @="C:\\Windows\\System32\\cmd.exe /k pushd \"%L\"" 例2 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cmd_here] @="コマンドプロンプトを開く(&P)" [HKEY_CLASSES_ROOT\Directory\Background\shell\cmd_here\command] @="C:\\Windows\\System32\\cmd.exe /k pushd \"%V\"" 例のレジストリのコードは、下記より引用させていただきました。 http://qiita.com/tueda/items/0036ee8e9280f70f04f0 どうぞよろしくお願いいたします。

  • 記号の意味

    次の記号の意味を教えてください。 ~の下に-があるのと~の下に=があるやつ。 あと直和と直積の記号は○の中に+と×でいいんですか?

  • 記号の意味について

    三角関数について以前質問したのですが、 回答に次のような物があってよく分かりません。 例) (sinα)^2 この場合の ^ってどんな意味がありますか?