Home > Backend Development > PHP Tutorial > Using PHP as a Shell Scripting Language_PHP Tutorial

Using PHP as a Shell Scripting Language_PHP Tutorial

WBOY
Release: 2016-07-21 16:08:03
Original
1227 people have browsed it

We all know that PHP is a very good dynamic web development language (fast speed, short development cycle...). But only a few people realize that PHP can also be used as a language for writing Shell scripts. When PHP is used as a language for writing Shell scripts, it is not as powerful as Perl or Bash, but it has good advantages. Especially for people like me who are familiar with PHP but not very familiar with Perl.
To use PHP as a shell scripting language, you must compile PHP as binary CGI instead of Apache mode; PHP compiled into binary CGI mode has some security issues. For solutions, please refer to the PHP manual ( http://www.php.net).
You may feel uncomfortable writing Shell scripts at first, but you will get better gradually: the only difference between using PHP as a general dynamic web page writing language and as a Shell script language is that a Shell script needs to be written first Xing Shengsheng explains the program path of this script:
We added the parameter "-1" after the PHP execution file, so that PHP will not output HTTPHeader (if you still need to use it as a dynamic web page on the Web, then you need to use the header yourself function output HTTPHeader). Of course, you still need to use PHP's opening and closing tags in the shell script:

Now let us look at an example to better understand the use of PHP as a shell scripting language:

Copy code The code is as follows:

print("Hello, world!n");
?>

The above program will simply output "Hello, world!" to the monitor.

1. Pass the Shell script running parameters to PHP:
As a Shell script, you often add some parameters when running the program. When PHP is a Shell script, there is an embedded array "$argv", use "$ argv" array can easily read the parameters when the Shell script is running ("$argv[1]" corresponds to the first parameter, "$argv[2]" corresponds to the second parameter, and so on) . For example, the following program:

Copy code The code is as follows:

#!/usr/local/bin/php -q
$first_name = $argv[1];
$last_name = $argv[2];
printf("Hello, %s %s! How are you today?n" , $first_name, $last_name);
?>

The above code requires two parameters when running, namely last name and first name. For example, run like this:
[dbrogdon@artemis dbrogdon]$ scriptname.ph Darrell Brogdon
The Shell script will appear on the display Output:
Hello, Darrell Brogdon! How are you today?
[dbrogdon@artemis dbrogdon]$
When PHP is used as a dynamic web page writing language, it also contains the "$argv" array, but it is the same as here Some differences: When PHP is used as a Shell script language, "$argv[0]" corresponds to the file name of the script, but when used for dynamic web page writing, "$argv[1]" corresponds to the first character of QueryString. parameters.

2. Write an interactive Shell script:
If a Shell script just runs by itself and loses interactivity, then it is meaningless. When PHP is used to write Shell scripts, how to read the information entered by the user? Unfortunately, PHP itself does not have a function or method for reading user input information, but we can follow the example of other languages ​​and write a function "read" that reads user input information:

Copy code The code is as follows:

function read() {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255);
fclose($fp);
return $input;
}
?>

It should be noted that the above function can only be used on Unix systems (other systems need to make corresponding changes). The above function will open a file pointer, then read a line of no more than 255 bytes (that's what fgets does), then close the file pointer and return the read information.
Now we can use the function "read" to modify the program 1 we wrote earlier to make it more "interactive":

Copy code The code is as follows:

function read() {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255);
fclose($fp);
return $input;
}
print("What is your first name? ");
$first_name = read();
print("What is your last name? ");
$last_name = read();
print("nHello, $first_name $last_name! Nice to meet you!n");
?>

Save the above program and run it. You may see something unexpected: the last line of input becomes three lines! This is because the information returned by the "read" function also includes the ending newline character "n" of each line of the user, which is retained in the last name and first name. To remove the ending newline character, the "read" function needs to be modified:

Copy code The code is as follows:

function read() {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255);
fclose($fp);
$input = chop($input); / / Remove trailing whitespace
return $input;
}
?>

3. Include Shell scripts written in PHP in Shell scripts written in other languages:
Sometimes we may need to include Shell scripts written in PHP in Shell scripts written in other languages. It's actually very simple. Here is a simple example:
echo This is the Bash section of the code.

Copy code The code is as follows:

/usr/local/bin/php -q << EOF
print("This is the PHP section of the coden");
?>
EOF

In fact, it is calling PHP to parse the following code and then output it; then, try the following code again:
echo This is the Bash section of the code.

Copy code The code is as follows:

/usr/local/bin/php -q << EOF
$myVar = 'PHP';
print("This is the $myVar section of the coden");
?>
EOF

It can be seen that the only difference between the two codes is that a variable "$myVar" is used the second time. Try running it, and PHP actually gives an error message: "Parse error: parse error in - on line 2" ! This is because the variables in Bash are also "$myVar", and the Bash parser replaces the variables first. To solve this problem, you need to add the "" escape character in front of each PHP variable, so just now The code is modified as follows:
echo This is the Bash section of the code.

Copy code The code is as follows:

/usr/local/bin/php -q << EOF
$myVar = 'PHP';
print("This is the $myVar section of the coden");
?>
EOF

Okay, now you can write your own Shell script in PHP, I hope you are doing well. If you have any questions, you can discuss them on the forum of this site.


English version address: http://www.phpbuilder.com/columns/darrell20000319.php3

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314942.htmlTechArticleWe all know that PHP is a very good dynamic web development language (fast speed, short development cycle... ). But only a few people realize that PHP can also be used very well for writing...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template