- ベストアンサー
Ruby の記号 $? の意味を教えて
boingboingの回答
- boingboing
- ベストアンサー率50% (8/16)
これは、shellスクリプト等を触っていればよく出てくるし、それ以外でもよくある話なのですが、あるプログラムが終了すると、それが正常終了したか、異常終了したか終了後にほかのプログラムに知らせるリターンコードっていうのがあります。 まず最初に、cmdには"ls -l"がはいってます。 こいつを、systemつまり、OSに食わせるわけです(厳密にはちょっと違うと思いますがね。この説明)。 で、そいつが正常終了すれば、0。異常終了すれば0以外を返します。 …ふつうは。 ふつうはそういう設計になっているはずです。 歴史的に、正常終了は0なのです。 もしそれの由来とかどなたかご存じでしたらお教えねがいたいんですが。 ともかく、異常終了したら、1が返ってくる場合が殆どです。 これを条件のif文で分岐させるんです。
関連する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>
- 締切済み
- その他(ITシステム運用・管理)
- 断路器のDSをLSと書くのは何か意味があるのでしょ
断路器のDSをLSと書くのは何か意味があるのでしょうか? DSとLSの違いを教えてください。 DSはディスコンスイッチの略だと思いますがLSのLは何ですか?
- ベストアンサー
- 電気・電子工学
- VLOOKの記号の意味
VLOOK関数はまったく無知ですので教えてください。 =if(E4="","",E4*0.2772) の場合、ifは何を、""は何を意味するのでしょうか? たとえばE9セルにE8に2を掛ける式を表示させたい場合(通常計算では「=E8*2」の式)は =IF(E8="","",E8*2) で正しいのでしょうか?
- ベストアンサー
- Excel(エクセル)
- レジストリ 書式 変数
下記の例のレジストリのコードで、%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 どうぞよろしくお願いいたします。
- 締切済み
- Windows系OS
お礼
ご丁寧に解説していただいて有難うございます。 「$?.exitstatus」は system(cmd) 実行の戻り値ですね。 しかし、「$?」はどのように定義されたのでしょうか。 $?.exitstatus の他に、使い方の例を教えて頂けたら助かります。