この記事では、PHPの-rオプションと-Rオプションについて紹介します。
ワンライナーのコマンドとして実行する場合や、
シェルスクリプトの一部としてPHPコードを実行したい場合に便利なものなので、
ぜひ参考にしてください。
-r オプションとは
-r <code> Run PHP <code> without using script tags <?..?>
phpファイルではなく、
PHPコマンドの引数にコードを指定して実行するためのオプションです。
使い方は、下記の通り。
php -r 'print("hello\n");'
hello
-r オプションに指定したコードが実行されます。
下記のように、複数行に渡る処理も実行することができます。
php -r '
for ($i=0; $i<10; $i++){
print("$i\n");
}
'
0
1
2
3
4
5
6
7
8
9
注意点としては、上記のサンプルはPHPコードをシングルクォートで囲っていますが、
場合によってはダブルクォートで囲いたい場合もあります。
その際には、PHPコード内のダブルクォードはエスケープする必要があります。
-R オプションとは
-R <code> Run PHP <code> for every input line
-Rオプションも、PHPコードを指定して実行するためのオプションですが、
パイプラインの入力を一行ずつ処理するために存在します。
-R オプションを使った場合、1行分の文字列が、$argn
という変数に入ってくるので、
以下のような処理が書けます。
要素番号は、$argi
という変数に設定されます。
cat << EOF |
hoge
piyo
foo
EOF
php -R '
// 一行毎に文字列を大文字化
$s = strtoupper($argn);
print("${argi}: ${argn} -> ${s}\n");
'
1: hoge -> HOGE
2: piyo -> PIYO
3: foo -> FOO
一行毎に実行したい処理が指定できます。
まとめ
シェルの機能だけでは難しい処理でも、
PHPコマンドの-rや、-Rオプションを使う事で、より実現できるものが増えていきます。
PHPだけでなく、PerlやPython、Rubyなども
オプションでコードを直接指定して実行することが可能ですので、
どんどん活用してみましょう。