用PHP脚本在Linux系统上读取输入和对文件进行操作

Perl作为Linux系统命令行脚本的首选解释语言的日子一去不复返了。今天,我们有了更多的选择,包括Python、Ruby和PHP。如果你已经为网站编写PHP代码,并熟谙这种语言,那么你会发现,在命令行使用PHP的速度之快,效果之好令人惊奇。

在脚本中,任何脚本语言的一个最大功用是对文件进行操作并获取用户输入。PHP处理这些丝毫不比其它任何脚本语言逊色。

例如,利用PHP在脚本执行期间处理读取用户提供输入,使用:

#!/usr/bin/php

<?php
function read_input()
{
$fp = fopen("/dev/stdin", "r");
$input = trim(fgets($fp, 255));
fclose($fp);
return $input;
}
printf("Please supply your name: ");
$name = read_input();
printf(" Hello, $name. ");
?>
</code>

上面定义的read_input()函数将从STDIN提取输入,存储于$input 变量中,整理所有引导的和尾随的空白空间,然后返回。

同样的原理还可以应用于读取和操作标准文件;记住,对于Linux,STDIN只是另一个文件而已(相应地,上述例子中的opening /dev/stdin 也是这样)。

#!/usr/bin/php

<?php
if (file_exists($argv[1]))
{
$file = $argv[1];
} else {
printf("ERROR: File '$file' does not exist! ");
exit 1;
}
$data = file($file);
$c = 1;
foreach ($data as $line)
{
printf(sprintf("[%s]: %s", $c, $line));
$c++;
}

在上述例子中,PHP脚本将会读取传递到命令行文件中的每一行,并紧随当前行数将其输出。如果文件不存在,脚本会打印一个出错提示,并将返回代码1并退出(1表示出错;在正常运行中,脚本会以返回代码0退出)。file() 函数在这里使用,它读取文件的每行,列成数组(在这个例子中,数组为$data),然后用于foreach()语句中,在数组中循环,一次是文件中的一行。

PHP已经不再严格拘泥于基于Web的编程。我们可以将它轻松应用于编写命令行脚本,既灵活又快速。

同样地,几乎所有你能用Web脚本进行操作的,例如,数据库操作,都可以轻松地应用PHP的命令行脚本完成。

时间: 2024-10-28 23:13:57

用PHP脚本在Linux系统上读取输入和对文件进行操作的相关文章

用PHP在Linux上读取输入并进行文件操作

Perl作为Linux系统命令行脚本的首选解释语言的日子一去不复返了.今天,我们有了更多的选择,包括Python.Ruby和PHP.如果你已经为网站编写PHP代码,并熟谙这种语言,那么你会发现,在命令行使用PHP的速度之快,效果之好令人惊奇. 在脚本中,任何脚本语言的一个最大功用是对文件进行操作并获取用户输入.PHP处理这些丝毫不比其它任何脚本语言逊色. 例如,利用PHP在脚本执行期间处理读取用户提供输入,使用: #!/usr/bin/php<?phpfunction read_input(){

Shell脚本实现Linux系统和进程资源监控

 这篇文章主要介绍了Shell脚本实现Linux系统和进程资源监控,本文讲解了检查进程是否存在.检测进程 CPU 利用率.检测进程内存使用量.检测进程句柄使用量.,需要的朋友可以参考下     在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员.本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写. 文章目录: 1.Linux使用 Shell 检查进程是否存在 2.Linu

如何在Linux系统上显示当前及子目录中的文件数量

在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量. 我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自标准输入的换行符.单词和字节计数. 以下是我们在 find 命令中使用的选项,如下所示: -type - 指定要搜索的文件类型,在上面的情况下,f 表示查找所有常规文件. -print - 打印文件绝对路径. 以下是我们 wc 命令中使用的选项,如下所示: -l - 此选项打印换行符的总数,也即由

[翻译]现代Linux系统上的栈溢出攻击【转】

转自:http://www.codeweblog.com/%E7%BF%BB%E8%AF%91-%E7%8E%B0%E4%BB%A3linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E6%A0%88%E6%BA%A2%E5%87%BA%E6%94%BB%E5%87%BB/ 现代Linux系统上的栈溢出攻击 2012.12.21 - 06:56 - jip 预备知识: 对C语言和 X86_64 汇编语言有基本的了解 ++++++++++++++++++++++++

ssh linux-从本机往虚拟机(linux系统)上传东西

问题描述 从本机往虚拟机(linux系统)上传东西 遇到一个特别匪夷所思的问题,本机安装了虚拟机,想用SecureCRT或WinSCP软件通过SSH协议把本机的JAR包上传到虚拟机,可就是传不上去,上传过程中软件如同死机一样没有反映.但上传word文档(小文件)就能传上去. 同事用他们的电脑用同样的方式连我的虚拟机就可以传我传不上的文件,请求下牛人们这是怎么回事,百思不得其解? 解决方案 是不是防火墙什么的过滤掉了啊?我猜测 解决方案二: 是不是本地杀毒软件拦截

Linux系统上架设一台高容量的POP3服务器

POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到互联网上的邮件服务器和下载电子邮件的电子协议.它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的.本文将介绍如何使用开源软件Procmail和Qpopper,在Linux系统上配置一台可供大量用户使用的POP3服务器. 1.下载Procmail和

如何在Linux系统上安装Domino Server

前言 在Linux系统上安装Domino Server是一个小小的挑战,其实并没有大家想想的复杂,既然是商业性的软件,OEM早就为我们解决了安装的难度,还有就是选择自己熟悉的Linux发行版,各个发行版操作上还是有一定的区别的,这里选择最新的Ubuntu Server 13.04,尽量在Server版本的Ubuntu上安装,虽然说Desktop版本也可以. 安装 Unbuntu server 13.4 下载Ubuntu server镜像 http://releases.ubuntu.mirror

在Linux系统上使用Bugzilla跟踪bug

对于负责提供支持的人而言,保持对问题.难题及其修订的跟踪,可能会是一项棘手的任务:不过,有一个完美的开源方案可以满足这一要求:Bugzilla.安装它之后,您就可以方便地跟踪 bug 了,并可在发现特定的问题和解决方案时得到通知.本文给出了在 Linux 系统上安装 Bugzilla 的逐步指南. Bugzilla 是一个缺陷或 bug 跟踪系统,这个系统能够让个人或者团队开发人员保持 对他们的产品中突出 bug 的跟踪.此类系统允许用户跟踪 bug 和代码修改,与其他队友沟通,提交和回顾修订补

Linux系统上安装MRTG来监控网络流量

Multi Router Traffic Grapher------MRTG是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载. SNMP(imple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理.随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体