So verwenden Sie PHP als Shell-Skriptsprache
- WBOYOriginal
- 2016-07-29 09:15:49804Durchsuche
Wir alle wissen, dass PHP eine sehr gute dynamische Webentwicklungssprache ist (hohe Geschwindigkeit, kurzer Entwicklungszyklus...). Aber nur wenige Leute erkennen, dass PHP auch als Sprache zum Schreiben von Shell-Skripten verwendet werden kann. Wenn PHP als Sprache zum Schreiben von Shell-Skripten verwendet wird, ist es nicht so leistungsfähig wie Perl oder Bash, bietet aber vor allem gute Vorteile Leute wie ich, die mit PHP vertraut sind, aber mit Perl nicht sehr vertraut sind.
Um PHP als Shell-Skriptsprache zu verwenden, müssen Sie PHP im binären CGI-Modus kompilieren, anstatt im Apache-Modus. PHP, das im binären CGI-Modus kompiliert wird, weist einige Sicherheitsprobleme auf, die gelöst werden können. Weitere Informationen finden Sie unter Weitere Informationen finden Sie im PHP-Handbuch (http://www.php.net).
Anfangs mag es für Sie unangenehm sein, Shell-Skripte zu schreiben, aber mit der Zeit wird es Ihnen besser gehen: Der einzige Unterschied zwischen der Verwendung von PHP als allgemeiner dynamischer Webseiten-Schreibsprache und als Shell-Skriptsprache besteht in einem Shell-Skript In der ersten Zeile muss der Programmpfad dieses Skripts erläutert werden:
#!/usr/local/bin/php -q
Wir führen die Datei in PHP aus Der Parameter „-1“ wird später hinzugefügt, sodass PHP keinen HTTPHeader ausgibt (wenn Sie ihn weiterhin als dynamische Webseite im Web verwenden müssen, müssen Sie die Header-Funktion verwenden, um HTTPHeader selbst auszugeben). Natürlich müssen Sie weiterhin die öffnenden und schließenden Tags von PHP im Shell-Skript verwenden:
Schauen wir uns nun ein Beispiel an, um die Verwendung von PHP als Shell-Skriptsprache besser zu verstehen:
#!/usr/local/bin/php -q
print("Hallo, Welt!n");
? 🎜>
Das obige Programm gibt einfach „Hallo Welt!“ auf dem Monitor aus.
1. Übergeben Sie die Shell-Skript-Ausführungsparameter an PHP:
Als Shell-Skript fügen Sie häufig einige Parameter hinzu, wenn PHP als verwendet wird Im Shell-Skript gibt es ein eingebettetes Array „$argv“. Mithilfe des Arrays „$argv“ können die Parameter einfach gelesen werden, wenn das Shell-Skript ausgeführt wird („$argv[1]“ entspricht dem ersten Parameter „$argv[ 2]" entspricht dem zweiten Parameter usw.). Zum Beispiel das folgende Programm:
#!/usr/local/bin/php -q
$first_name = $argv[1]; 🎜> $last_name = $argv[2];
printf("Hallo, %s %s! Wie geht es dir heute?n", $first_name, $last_name); >
?>
Der obige Code erfordert beim Ausführen zwei Parameter, nämlich Nachname und Vorname. Führen Sie ihn beispielsweise so aus:
[ dbrogdon@artemis dbrogdon]$ scriptname.ph Darrell Brogdon
Das Shell-Skript wird auf dem Monitor ausgegeben:
Hallo, Darrell Brogdon!
[dbrogdon@artemis dbrogdon]$
Wenn PHP als dynamische Webseiten-Schreibsprache verwendet wird, enthält es auch das Array „$argv“, aber es gibt welche Einige Unterschiede zu hier: Wenn PHP als Sprache zum dynamischen Schreiben von Webseiten verwendet wird. Bei Verwendung der Shell-Skriptsprache entspricht „$argv[0]“ dem Dateinamen des Skripts, und bei Verwendung zum dynamischen Schreiben von Webseiten entspricht „$ argv[1]“ entspricht dem ersten Parameter von QueryString.
2. Schreiben Sie ein interaktives Shell-Skript:
Wenn ein Shell-Skript einfach von selbst ausgeführt wird und die Interaktivität verliert, ist es bedeutungslos. Wie werden die vom Benutzer eingegebenen Informationen gelesen, wenn PHP zum Schreiben von Shell-Skripten verwendet wird? Leider verfügt PHP selbst nicht über eine Funktion oder Methode zum Lesen von Benutzereingabeinformationen, aber wir können dem Beispiel anderer Sprachen folgen und eine Funktion „read“ zum Lesen von Benutzereingabeinformationen schreiben:
function read() {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255) ;
fclose($fp);
return $input; ;
Es ist zu beachten, dass die obige Funktion nur auf Unix-Systemen verwendet werden kann (andere Systeme müssen entsprechende Änderungen vornehmen). Die obige Funktion öffnet einen Dateizeiger, liest dann eine Zeile von nicht mehr als 255 Bytes (das macht fgets), schließt dann den Dateizeiger und gibt die gelesenen Informationen zurück.
Jetzt können wir die Funktion „lesen“ verwenden, um das Programm 1, das wir zuvor geschrieben haben, zu ändern, um es „interaktiver“ zu machen:
#!/usr /local/ bin/php -q
function read() {
$fp = fopen('/dev/stdin', 'r'); >$input = fgets($fp, 255);
fclose($fp);
return $input; 🎜>}
print("Wie ist Ihr Vorname? "
$first_name = read();
print ("Wie lautet Ihr Nachname? ");
$last_name = read();
print("nHallo, $first_name $last_name! Schön dich kennenzulernen !n");
?>
Speichern Sie das obige Programm und führen Sie es aus. Möglicherweise sehen Sie etwas Unerwartetes. Sache: Die letzte Eingabezeile wurde zu drei Zeilen! Dies liegt daran, dass die von der Funktion „read“ zurückgegebenen Informationen auch das abschließende Newline-Zeichen „n“ jeder Zeile des Benutzers enthalten, das im Nachnamen und Vornamen erhalten bleibt. Funktion muss geändert werden:
function read() {
$fp = fopen('/dev/stdin', 'r'); 🎜>
$input = fgets ($fp, 255);
fclose($fp);
$input = Chop($input); / Nachgestellte Leerzeichen entfernen
return $input;
?> In in anderen Sprachen geschriebenen Shell-Skripten enthalten In PHP geschriebene Shell-Skripte:
Manchmal müssen wir in PHP geschriebene Shell-Skripte in in anderen Sprachen geschriebene Shell-Skripte einschließen. Es ist eigentlich ganz einfach. Hier ist ein einfaches Beispiel:
#!/bin/bash
echo Dies ist der Bash-Abschnitt des Codes
/usr/local/bin/php -q << EOF
print("Dies ist der PHP-Abschnitt des Codes"
?>
EOF
Tatsächlich ruft es PHP auf, um den folgenden Code zu analysieren und ihn dann auszugeben. Versuchen Sie es dann erneut:
#!/bin/bash
echo Dies ist der Bash-Abschnitt des Codes
/usr/local/bin/php -q < < EOF
$myVar = 'PHP' >?>
EOF
Es ist ersichtlich, dass der einzige Unterschied zwischen den beiden Codes darin besteht, dass im zweiten Code eine Variable „$myVar“ verwendet wird Versuchen Sie es einmal auszuführen, PHP gab tatsächlich eine Fehlermeldung aus: „Parse-Fehler: Parse-Fehler in – in Zeile 2“! Dies liegt daran, dass die Variablen in Bash ebenfalls „$myVar“ sind und der Bash-Parser die Variablen zuerst ersetzt. Um dieses Problem zu lösen, müssen Sie „“ vor jeder PHP-Variablen hinzufügen.
Escape-Zeichen, dann wird der Code gerade wie folgt geändert:
#!/bin/bash
echo Dies ist der Bash-Abschnitt des Codes
/usr/local/bin/php -q << EOF
$myVar = 'PHP';
print("This ist der $myVar-Abschnitt des Codes");
?>
EOF
Okay, jetzt können Sie Ihren Code schreiben In PHP habe ich mein eigenes Shell-Skript erstellt. Ich hoffe, dass bei Ihnen alles gut geht.
Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.
Das Obige stellt die Verwendung von PHP als Shell-Skriptsprache vor, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn