Shell実行中に自身のコマンドを調べる方法

Pocket

Shell実行中に現在実行中の自分自身のシェルコマンドを知りたい場合があったので解説する。

シェルは以下の様に実行される。

$ app/Console/cake {shellname} {command}

この時、実行中に自身の実行コマンドである「{shellname} {command}」を取得したい場合はShellのソース内で以下の様に取得する事ができる。

class FooShell extends Shell {
   public function bar() {
      $parser = $this->getOptionParser();
      echo $parser->command() . ' ' . $this->command);
   }
}

$this->getOptionParser()でパーサーオブジェクトを取得し、$parser->command()にて、実行中のシェル名「foo」を得る事ができる。

また、実行中のシェル$this->command で実行されたコマンド(method)「bar」が得られる。

 

記事が役に立ったらぜひシェアをお願いします。

Pocket