在我的博客里有一些文章是和解码或者处理文件有关,其中有些自动化工作比较简单,使用了一些PHP程序来编写处理,这样写起程序来也比较快,因为是纯过程的任务,不想用C#来处理。

写完PHP的脚本程序后,保存在文件了,按大多数人的理解,可能是会做一个WEB服务,然后通过浏览器去访问一下这个文件,它就运行了,其实大可不必如此,因为PHP的程序本身就提供了命令行的运行方式,直接在命令行里运行即可,不必为了运行个文件去搞一个WEB服务在电脑里(对我这种人来说,PHP就是为了写脚本)。

下面介绍几个使用命令行运行PHP的方法,假设你已经配置好了PHP在电脑里的环境变量,已完成了在CMD窗口中直接写php就能直接运行的配置,以WINDOWS为例,在Linux里的用法,一样的。

一、基础的运行PHP文件方法

PHP
php -f php文件

示例:

PHP
<?php
echo 100+200;
echo "\r\n";
echo "这是一个通过命令行直接运行的脚本";
?>

运行结果:

可以看到它已经计算了 100+200 的结果,输出了300,并且按程序要求换了行

二、在运行过程中接收人工输入的内容,然后处理

作为命令行程序,肯定会有需要交互的情况,输入内容,然后处理,这里需要使用三个常量:

STDIN :标准的输入设备
STDOUT: 标准的输出设备
STDERR :标准的错误设备

可以在PHP脚本里使用这三个常量,接受输入,或者显示处理和计算的结果。

下面是示例:

PHP
<?php
//输出一个提示
fwrite(STDOUT, "写一个数字: ");
//接收一个输入
$num = fgets(STDIN);
//处理后输出
fwrite(STDOUT, $num * 100);
?>

运行结果:

可以看到输入100之后,输出10000,乘以了100,说明已经正常接收了输入和计算后输出

三、在命令行中直接带上参数,做为脚本变量直接使用

如果在脚本程序中需要直接带入参数,也是可以的,比如脚本已经写好,根据不同的工作需求带上不同的参数。

这需要使用PHP自带的两个特殊变量:

$argv :命令行中的参数将保存为该变更的数组元素

$argc :它用来保存$argv数组里元素的个数

下面是示例:

PHP
<?php
echo "变量的个数是:" . $argc . "\r\n";
echo "第1个参数:" . $argv[0] . "\r\n";
echo "第2个参数:" . $argv[1] . "\r\n";
echo "第3个参数:" . $argv[2] . "\r\n";
echo "第4个参数:" . $argv[3] . "\r\n";
?>

运行结果:

在PHP中,第一个参数永远是脚本文件本身,所以可以看到给出了正确的变量数,也输出了正确的各个变量,注意,如果变量中有空格,需要引号把有空格的变量内容括起来。

以上的几个内容,已经几乎能满足写脚本程序需要用到的命令行方法,会PHP的话,看到这里应该没啥不理解的了。

如何使用命令行直接运行PHP脚本程序的更多相关文章

  1. 在命令行终端运行 Elisp 脚本

    通常,我们在 Emacs 中运行 Elisp 代码片段,但是也可能需要在命令行终端运行 Elisp 脚本程序.在命令行终端运行 Elisp 脚本需要使用 --script 选项,例如: emacs - ...

  2. 使用命令行方式运行 JMeter 脚本

    For non-interactive testing, you may choose to run JMeter without the GUI. To do so, use the followi ...

  3. sbit命令行中运行scala脚本

    一般sbit编译器采成了scala运行工具.启动sbit命令行,输入console,命令行自动切换到scala编辑器面. scala>:paste 然后手动将XXX.scala中的代码拷贝到界面 ...

  4. 如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?

    <?php/* //命令行输入输出流fwrite(STDOUT,"Enter your name:"); $name = trim(fgets(STDOUT)); fwrit ...

  5. SoapUI命令行方式运行

    http://stackoverflow.com/questions/9220132/soapui-groovy-script-calls-to-command-line SoapUI支持用命令行方式 ...

  6. jmeter命令行模式运行,实时获取压测结果

    jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script. ...

  7. FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

    FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...

  8. Jmeter使用非 GUI 模式,即命令行模式运行实例讲

    转载:http://www.cnblogs.com/leeboke/p/5238269.html 参考资料:https://girliemangalo.wordpress.com/2009/10/29 ...

  9. 命令行模式运行jmeter,主从方式运行jmeter

    jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script.jmx -R 10.6.5.31,10.6.5 ...

  10. pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题

    运行模块(包含main函数的模块),在模块开头添加以下代码,原因是pycharm运行python脚本时,会自动添加以下代码,将当前库加入到系统库目录集合中,在命令行中运行需要手动添加import os ...

随机推荐

  1. Java基础1-1-5—java基础语法(idea开发工具)

    5. 开发工具 5.1 idea中项目结构 project(项目.工程) module(模块) package(包) class(类) 一个项目中可以存在多个模块多个模块中,存放项目不同的业务功能代码 ...

  2. C# 线程同步查漏补缺

    同步构造 当线程 A 在等待一个同步构造,另一个线程 B 持有构造一直不释放,那么就会导致线程 A 阻塞.同步构造有用户模式构造和内核模式构造. 用户模式构造通过 CPU 指令来协调线程,所以速度很快 ...

  3. 【分析笔记】Linux tasklet 机制的理解

    Tasklet 介绍 Linux 内核提供的四种中断下半部中 softirq(软中断).tasklet(小任务).workqueue(工作队列) .request thread(中断线程)中的其中一种 ...

  4. Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介

    简介 Grafana Labs 简介 Grafana 是用于时序数据的事实上的仪表盘解决方案.它支持近百个数据源. Grafana Labs 想从一个仪表盘解决方案转变成一个可观察性 (observa ...

  5. C#Autofac依赖注入批量注入 (目前版本.netcore3.0)

    上一文:C#依赖注入一看就会系列 链接:C#依赖注入(直白明了)讲解 一看就会系列 - 22222220 - 博客园 (cnblogs.com) 上一次我们知道了 为什么要依赖注入,这次我们就用使用人 ...

  6. .Net Core(.Net6)创建grpc

    1.环境要求 .Net6,Visual Studio 2019 以上 官方文档: https://learn.microsoft.com/zh-cn/aspnet/core/tutorials/grp ...

  7. 使用Hook拦截sendto函数解决虚拟局域网部分游戏联机找不到房间的问题——以文明6为例

    正文 重要提醒(2023-02-13):本文部分内容存在bug,目前正在调试修改,会在一段时间之后更新 重要提醒(2023-02-14):目前已修复主要bug,会在一段时间之后更新,本文计划重写大部分 ...

  8. Centos7系统编译Hadoop3.3.4

    1.背景 最近在学习hadoop,此篇文章简单记录一下通过源码来编译hadoop.为什么要重新编译hadoop源码,是因为为了匹配不同操作系统的本地库环境. 2.编译源码 2.1 下载并解压源码 [r ...

  9. Blue Mary开公司

    Blue Mary开公司 题面:[JSOI2008]Blue Mary开公司 题目大意: 每次加入一条形如 \(y=Px + S - P\) 的直线,询问 \(x=T\) 时此处最高的 \(y\) 值 ...

  10. ubuntu18.04 server版安装教程

    转载博客园: Ubuntu18.04 Server版安装(详细版) - 运维密码 - 博客园 (cnblogs.com)