ホームページ  >  記事  >  バックエンド開発  >  PHP をシェル スクリプト言語として使用する方法_PHP チュートリアル

PHP をシェル スクリプト言語として使用する方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:23:24870ブラウズ

PHP が非常に優れた動的 Web 開発言語 (高速、短い開発サイクルなど) であることは誰もが知っています。しかし、PHP がシェル スクリプトを作成するための言語としても使用できることを認識している人はほとんどいません。PHP は、Perl や Bash ほど強力ではありませんが、特に、次のような場合に優れた利点があります。私のような人は、PHP には詳しいが、Perl にはあまり詳しくありません。
PHP をシェル スクリプト言語として使用するには、PHP を Apache モードではなくバイナリ CGI としてコンパイルする必要があります。バイナリ CGI モードで実行するように PHP をコンパイルする際には、セキュリティ上の問題がいくつかあります。解決策については、PHP マニュアル (http://. /www.php.net)。
最初はシェル スクリプトを書くことに不快に感じるかもしれませんが、時間が経つにつれて上達します。PHP を一般的な動的 Web ページ作成言語として使用する場合と、シェル スクリプト言語として使用する場合の唯一の違いは、最初のスクリプトでシェル スクリプトを開始する必要があることです。このスクリプトのプログラム パスを説明します:
#!/usr/local/bin/php -q
PHP が HTTPHeader を出力しないように、PHP 実行ファイルの後にパラメータ「-1」を追加しました (必要な場合)。 Web Dynamic Web ページとして使用するには、ヘッダー関数を使用して自分で HTTPHeader を出力する必要があります)。もちろん、シェル スクリプトで PHP の開始タグと終了タグを使用する必要があります:

次に、シェル スクリプト言語としての PHP の使用をよりよく理解するための例を見てみましょう:
#!/usr/local /bin/ php -q
print("Hello, world!n");
?>
上記のプログラムは単に「Hello, world!」をモニターに出力します。
1. シェル スクリプトの実行パラメータを PHP に渡します。
シェル スクリプトとして、プログラムを実行するときに、埋め込み配列「$argv」を使用できます。 $argv" 配列。シェル スクリプトの実行中にパラメータを読み取るのに非常に便利です ("$argv[1]" は最初のパラメータに対応し、"$argv[2]" は 2 番目のパラメータに対応します。など) 。たとえば、次のプログラム:
#!/usr/local/bin/php -q
$first_name = $argv[1];
$last_name = $argv[2]; %s %s! 今日はどうですか?n", $first_name, $last_name);
?>
上記のコードは、実行時に 2 つのパラメータ、つまり姓と名を必要とします。たとえば、次のように実行します:
[dbrogdon @artemis dbrogdon]$ scriptname.ph Darrell Brogdon
シェル スクリプトがモニターに出力します:
こんにちは、Darrell Brogdon! 今日はどうですか?
[dbrogdon@artemis dbrogdon]$
PHP を動的 Web ページの書き込みとして使用する場合PHP がシェル スクリプト言語として使用される場合、「$argv[0]」はスクリプトのファイル名に対応し、動的言語として使用される場合は、「$ argv」配列も含まれますが、こことはいくつかの違いがあります。 Web ページの書き込みでは、「$argv[1 ]」が QueryString の最初のパラメータに対応します。
2. インタラクティブなシェル スクリプトを作成します。
シェル スクリプトが単独で実行され、インタラクティブ性が失われる場合は意味がありません。 PHP を使用してシェル スクリプトを作成する場合、ユーザーが入力した情報をどのように読み取るのでしょうか?残念ながら、PHP 自体にはユーザー入力情報を読み取るための関数やメソッドはありませんが、他の言語を模倣して、ユーザー入力情報を読み取るための関数 "read" を記述することができます:
function read() { $ fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255);
return $input
?> 必要なもの上記の点に注意してください。この関数は Unix システムでのみ使用できます (他のシステムでは対応する変更を行う必要があります)。上記の関数は、ファイル ポインターを開き、次に 255 バイト以下の行を読み取り (これが fgets の動作です)、その後ファイル ポインターを閉じて、読み取った情報を返します。
ここで、関数「read」を使用して、以前に作成したプログラム 1 を変更して、より「対話型」にすることができます:
#!/usr/local/bin/php -q
function read( ) {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, $fp);
return $input; "); $first_name = read();
print("あなたの姓は何ですか? ");
$last_name = read();
print("nこんにちは、$first_name $last_name! !n");
?>
上記のプログラムを保存して実行します。予期しない内容が表示されるかもしれません: 入力の最後の行が 3 行になります。これは、「read」関数によって返される情報には、ユーザーの各行の末尾の改行文字「n」も含まれており、これは姓と名に保持されるため、末尾の改行文字である「read」が削除されます。関数を変更する必要があります:
php
function read() {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255); fp);
$input = Chop( $input); // 末尾の空白を削除します
return $input;
?>
3. 他の言語で書かれたシェル スクリプトを含める:他の言語で書かれたシェル スクリプト PHP で書かれたシェル スクリプトが含まれています。これは実際には非常に簡単な例です:
#!/bin/bash
echo これはコードの Bash セクションです
/usr/local/bin/php -q print( "これはコードンの PHP セクションです");
?>
EOF
実際には、PHP を呼び出して次のコードを解析し、それを出力してから、次のコードを再試行します:
#!/bin/bash
echo これはコードの Bash セクションです。
/usr/local/bin/php -q $myVar = 'PHP';
print("これはコードの $myVar セクションです" );
?>
EOF
2 つのコードの唯一の違いは、変数 "$myVar" が 2 回目に使用されることです。実際に、PHP は次のエラー メッセージを表示します。 - 行 2 で解析エラーが発生しました。」これは、Bash の変数も「$myVar」であり、Bash パーサーが最初に変数を置き換えるためです。この問題を解決するには、各 PHP 変数の前にエスケープ文字「」を追加する必要があります。そのため、コードは次のようになります。次のように変更されました:
#!/bin/bash
echo これはコードの Bash セクションです
/usr/local/bin/php -q $myVar = 'PHP'; (「これはコードンの $myVar セクションです」);
?>
EOF
さて、これで PHP で独自のシェル スクリプトを作成できるようになりました。うまくいくことを願っています。


http://www.bkjia.com/PHPjc/446873.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446873.html技術記事 PHP が非常に優れた動的 Web 開発言語 (高速、短い開発サイクルなど) であることは誰もが知っています。しかし、PHP を使用して S...
を書くこともできることを認識している人はほんのわずかです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。