PHP命令行脚本接收传入参数的三种方式
通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
一、使用$argv or $argc参数接收
- <?php
- /**
- * 使用 $argc $argv 接受参数
- */
- echo "接收到{$argc}个参数";
- print_r($argv);
在Linux下执行:
- [root@DELL113 lee]# /usr/local/php/bin/php test.php
- 接收到1个参数Array
- (
- [0] => test.php
- )
- [root@DELL113 lee]# /usr/local/php/bin/php test.php a b c d
- 接收到5个参数Array
- (
- [0] => test.php
- [1] => a
- [2] => b
- [3] => c
- [4] => d
- )
- [root@DELL113 lee]#
二、使用getopt函数
- <?php
- /**
- * 使用 getopt函数
- */
- $param_arr = getopt('a:b:');
- print_r($param_arr);
在Linux下执行:
- [root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345
- Array
- (
- [a] => 345
- )
- [root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3
- Array
- (
- [a] => 345
- [b] => 12q3
- )
- [root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3 -e 3322ff
- Array
- (
- [a] => 345
- [b] => 12q3
- )
三、提示用户输入
- <?php
- /**
- * 提示用户输入,类似Python
- */
- fwrite(STDOUT,'请输入您的博客名:');
- echo '您输入的信息是:'.fgets(STDIN);
执行:
- [root@DELL113 lee]# /usr/local/php/bin/php test.php
请输入您的博客名:脚本之家 www.jb51.net
您输入的信息是:脚本之家 www.jb51.net
◆ 你也可以这么干,不让用户输入空信息
- <?php
- /**
- * 提示用户输入,类似Python
- */
- $fs = true;
- do{
- oif($fs){
- fwrite(STDOUT,'请输入您的博客名:');
- $fs = false;
- }else{
- fwrite(STDOUT,'抱歉,博客名不能为空,请重新输入您的博客名:');
- }
- $name = trim(fgets(STDIN));
- }while(!$name);
- echo '您输入的信息是:'.$name."\r\n";
执行:
- [root@DELL113 lee]# /usr/local/php/bin/php test.php
- 请输入您的博客名:
- 抱歉,博客名不能为空,请重新输入您的博客名:脚本之家
- 您输入的信息是:脚本之家
PHP命令行脚本接收传入参数的三种方式的更多相关文章
- 命令行运行Python脚本时传入参数的三种方式
原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...
- [PHP][linux] 命令行脚本接收传入参数的
第一种 :用{ $argv }接受参数 第二种 : getopt() 第三种:
- SpringBoot接收前端参数的三种方法
都是以前的笔记了,有时间就整理出来了,SpringBoot接收前端参数的三种方法,首先第一种代码: @RestController public class ControllerTest { //访问 ...
- ssh框架总结之action接收参数的三种方式
页面将参数传递给action的三种方式 一是通过属性传值: 将页面和action的的属性值保持一致,在action上写上该属性的set和get方法,这样在页面提交参数的时候,action就会调用set ...
- springmvc Controller接收前端参数的几种方式总结
(1) 普通方式-请求参数名和Controller方法的参数一致 @Controller @RequestMapping("/param") public class TestPa ...
- ASP.NET MVC post请求接收参数的三种方式
1.在控制器中建立一个PostDemo方法,建立视图创建一个表单 <h2>PostDemo</h2> name的值:@ViewBag.name <br /> nam ...
- strut2接收参数的三种方式
strut2接收参数有三种方式(普通属性\领域对象\模型驱动),分别对三种进行一个总结: 一.普通属性 Jsp代码 <body> <h1>普通属性</h1> < ...
- @Param注解在mybatis中的使用以及传入参数的几种方式(转)
第一种: Dao层的方法 <span style="font-size:12px;">Public User selectUser(String name,String ...
- Spark配置参数的三种方式
1.Spark 属性Spark应用程序的运行是通过外部参数来控制的,参数的设置正确与否,好与坏会直接影响应用程序的性能,也就影响我们整个集群的性能.参数控制有以下方式:(1)直接设置在SparkCon ...
随机推荐
- Mysql 数据库之修改标的结构
比如我们新建一user表 create table user( id int unsigned auto_increment primary key, name varchar(60) not nul ...
- selenium webdriver自动化测试
selenium家族介绍 Selenium IDE:Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能. Selenium ...
- 【javaweb学习】XML和约束模式
xml:可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系 <?xml version="1.0" encoding="g ...
- js null 和 undefined
undefined是一个特殊类型,null本质上是一个对象 typeof undefined//"undefined"typeof null//"object" ...
- Windows一些零碎
一.端口被占用: 1.netstat -ano |findstr 80 //查看3306端口是否存在 2.tasklist |findstr 3036(PID号)//查看pid为3036的是什么程序在 ...
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- Intellij 常用技巧-持续更新
1.快速输入 System.out.println(); sout [TAB] 2.删除Module ctrl+alt+shift+s 调出 Project Structure ,也可点击菜单Fil ...
- oracle 查询结果集运算
intersec:交集minus:差集union:进行表连接后会筛选掉重复的记录,表连接之后对结果进行排序运算,删除重复记录在返回结果. union all:只是简单的将两个结果合并就返回.无论是否有 ...
- linear-gradient----渐变
CSS3 渐变(gradient)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使用图像来实现这些效果,现在通过使用 CSS3 的渐变(gradients)即可实现.此外,渐变效果的 ...
- Javascript Promise入门
是什么? https://www.promisejs.org/ What is a promise? The core idea behind promises is that a promise r ...