用 PHP 作为 Shell 脚本语言
时间:2006-04-16
来源:互联网
Author: Darrell Brogdon
译: 姜运涛
原文地址:http://www.phpbuilder.com/columns/darrell20000319.php3?page=1
译注:由于本人水平有限,在翻译的过程中难免会有纰漏,如果有什么问题请发邮件与我联系:jiangyuntao#gmail.com。
正如我们大多数人所知,PHP 是当今开发动态网页的最佳语言。但很多人没有意识到用它来做 Shell 脚本也是非常不错的。PHP 作为 Shell 脚本的时候不会像 Bash 或是 Perl 那样在这方面是强项。但如果你像我一样懂 PHP 比 Perl 多一些,那么也将会有一些明显的优势。
使用 PHP 作为 Shell 语言的条件是你必须编译其为二进制的 CGI,而非 Apache 模块。这样做肯定会有一些安全问题,所以请先查阅 PHP 手册。
使用 PHP 作为 Shell 脚本与用其写动态网页在代码上的一点不同,就是你必须要像其他 Shell 一样,先在顶部写这样一段代码:
代码:
#!/usr/local/bin/php -q代码:
<?php ?>代码:
#!/usr/local/bin/php -q<?php
print("Hello World!\n");
?>
・向脚本传递参数
通常你可能需要向一个脚本传递参数,在 PHP 中用一个内建的 '$argv' 数组将会很容易实现,如下例如示:
代码:
#!/usr/local/bin/php -q<?php
$first_name = $argv[1];
$last_name = $argv[2];
print("Hello, $first_name $last_name! How are you today?\n");
?>
引用:
[yc@local yc]$scriptname.php Yeto Chiang引用:
Hello, Yeto Chiang! How are you today?[yc@local yc]$
・让脚本有更强的交互性
我们怎样得到用户的输入呢?我们怎样创建一个真正交互的脚本呢?PHP 本身并没有一个可以读取 Shell 命令的函数,但是我们可以用下面的函数模拟一个:
*注:本函数仅适用于类 Unix 系统
代码:
<?phpfunction read() {
$fp=fopen("/dev/stdin", "r");//译注:些处推荐用php://stdin,下同。
$input=fgets($fp, 255);
fclose($fp);
return $input;
}
?>
现在我们修改前面的脚本,让其使用刚刚创建的 'read' 函数来等待用户输入:
代码:
#!/usr/local/bin/php -q<?php
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");
?>
代码:
<?phpfunction read() {
$fp=fopen("/dev/stdin", "r");
$input=fgets($fp, 255);
fclose($fp);
return str_replace("\n", "", $input);
}
?>
有的时候可能需要将 PHP Shell 嵌入到一段已经写好的 Bash 或是其他 Shell 中,这相当容易,但也要小心些。
首先是如何嵌入 PHP 代码:
代码:
#!/bin/bashecho This is the Bash section of the code.
/usr/local/bin/php -q << EOF
<?php
print("This is the PHP section of the code\n");
?>
EOF
代码:
#!/bin/bashecho This is the Bash section of the code.
/usr/local/bin/php -q << EOF
<?php
$myVar = "PHP";
print("This is the $myVar section of the code.\n");
?>
EOF
引用:
<b>Parse error</b>: parse error in <b>-</b> on line <b>2</b><br>代码:
#!/bin/bashecho This is the Bash section of the code.
/usr/local/bin/php -q << EOF
<?php
\$myVar = "PHP";
print("This is the \$myVar section of the code.\n");
?>
EOF
--Darrell
[ 本帖最后由 姜运涛 于 2006-4-16 15:36 编辑 ]
作者: 姜运涛 发布时间: 2006-04-16
作者: Per 发布时间: 2006-04-17
PHPE早有人译过了
白译了
呵呵
作者: 姜运涛 发布时间: 2006-04-17
作者: 帅的不能再输啦 发布时间: 2006-04-17
作者: blackhailang 发布时间: 2006-06-28
作者: 小陈 发布时间: 2006-09-07
作者: lmhllr 发布时间: 2006-09-08
作者: MySQL 发布时间: 2006-09-08
作者: kenus 发布时间: 2006-09-08
作者: oodick 发布时间: 2007-08-28
如果PHP拿来当作shell 脚本语言的话,那他会有哪些优势呢

作者: ajneok 发布时间: 2008-02-24


作者: luzhou 发布时间: 2008-02-25


作者: ct_174880859 发布时间: 2008-02-27
作者: yuanjing_119 发布时间: 2008-02-28

作者: raylzw 发布时间: 2008-03-01
作者: bluesky56 发布时间: 2008-04-01
作者: carche 发布时间: 2008-04-02
作者: jefsun 发布时间: 2008-04-02
作者: 长头发的和尚 发布时间: 2008-04-03


作者: thaiki 发布时间: 2008-04-03
作者: 清竹�w翔 发布时间: 2008-04-03

作者: luzhou 发布时间: 2008-04-04
引用:
原帖由 ajneok 于 2008-2-24 16:11 发表在这里想提个问题^^"
如果PHP拿来当作shell 脚本语言的话,那他会有哪些优势呢

对于我们来说,PHP 更熟悉
当然这不能当做主流
但拿来玩玩还是可以的
就像 PHP-GTK,貌似没有人真的会拿它做项目
如楼上某位仁兄所言,还是把精力放在 WEB 上吧
作者: 姜运涛 发布时间: 2008-04-04
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28