通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
一、使用$argv or $argc参数接收

  1. <?php
  2. /**
  3. * 使用 $argc $argv 接受参数
  4. */
  5.  
  6. echo "接收到{$argc}个参数";
  7. print_r($argv);

在Linux下执行:

  1. [root@DELL113 lee]# /usr/local/php/bin/php test.php
  2. 接收到1个参数Array
  3. (
  4. [0] => test.php
  5. )
  6. [root@DELL113 lee]# /usr/local/php/bin/php test.php a b c d
  7. 接收到5个参数Array
  8. (
  9. [0] => test.php
  10. [1] => a
  11. [2] => b
  12. [3] => c
  13. [4] => d
  14. )
  15. [root@DELL113 lee]#

二、使用getopt函数

  1. <?php
  2. /**
  3. * 使用 getopt函数
  4. */
  5.  
  6. $param_arr = getopt('a:b:');
  7. print_r($param_arr);

在Linux下执行:

  1. [root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345
  2. Array
  3. (
  4. [a] => 345
  5. )
  6. [root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3
  7. Array
  8. (
  9. [a] => 345
  10. [b] => 12q3
  11. )
  12. [root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3 -e 3322ff
  13. Array
  14. (
  15. [a] => 345
  16. [b] => 12q3
  17. )

三、提示用户输入

  1. <?php
  2. /**
  3. * 提示用户输入,类似Python
  4. */
  5. fwrite(STDOUT,'请输入您的博客名:');
  6. echo '您输入的信息是:'.fgets(STDIN);

执行:

  1. [root@DELL113 lee]# /usr/local/php/bin/php test.php
    请输入您的博客名:脚本之家 www.jb51.net
    您输入的信息是:脚本之家 www.jb51.net

◆ 你也可以这么干,不让用户输入空信息

  1. <?php
  2. /**
  3. * 提示用户输入,类似Python
  4. */
  5.  
  6. $fs = true;
  7.  
  8. do{
  9. oif($fs){
  10. fwrite(STDOUT,'请输入您的博客名:');
  11. $fs = false;
  12. }else{
  13. fwrite(STDOUT,'抱歉,博客名不能为空,请重新输入您的博客名:');
  14. }
  15.  
  16. $name = trim(fgets(STDIN));
  17.  
  18. }while(!$name);
  19.  
  20. echo '您输入的信息是:'.$name."\r\n";

执行:

  1. [root@DELL113 lee]# /usr/local/php/bin/php test.php
  2. 请输入您的博客名:
  3. 抱歉,博客名不能为空,请重新输入您的博客名:脚本之家
  4. 您输入的信息是:脚本之家

PHP命令行脚本接收传入参数的三种方式的更多相关文章

  1. 命令行运行Python脚本时传入参数的三种方式

    原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...

  2. [PHP][linux] 命令行脚本接收传入参数的

    第一种 :用{ $argv }接受参数 第二种 : getopt() 第三种:

  3. SpringBoot接收前端参数的三种方法

    都是以前的笔记了,有时间就整理出来了,SpringBoot接收前端参数的三种方法,首先第一种代码: @RestController public class ControllerTest { //访问 ...

  4. ssh框架总结之action接收参数的三种方式

    页面将参数传递给action的三种方式 一是通过属性传值: 将页面和action的的属性值保持一致,在action上写上该属性的set和get方法,这样在页面提交参数的时候,action就会调用set ...

  5. springmvc Controller接收前端参数的几种方式总结

    (1) 普通方式-请求参数名和Controller方法的参数一致 @Controller @RequestMapping("/param") public class TestPa ...

  6. ASP.NET MVC post请求接收参数的三种方式

    1.在控制器中建立一个PostDemo方法,建立视图创建一个表单 <h2>PostDemo</h2> name的值:@ViewBag.name <br /> nam ...

  7. strut2接收参数的三种方式

    strut2接收参数有三种方式(普通属性\领域对象\模型驱动),分别对三种进行一个总结: 一.普通属性 Jsp代码 <body> <h1>普通属性</h1> < ...

  8. @Param注解在mybatis中的使用以及传入参数的几种方式(转)

    第一种: Dao层的方法 <span style="font-size:12px;">Public User selectUser(String name,String ...

  9. Spark配置参数的三种方式

    1.Spark 属性Spark应用程序的运行是通过外部参数来控制的,参数的设置正确与否,好与坏会直接影响应用程序的性能,也就影响我们整个集群的性能.参数控制有以下方式:(1)直接设置在SparkCon ...

随机推荐

  1. Mysql 数据库之修改标的结构

    比如我们新建一user表 create table user( id int unsigned auto_increment primary key, name varchar(60) not nul ...

  2. selenium webdriver自动化测试

    selenium家族介绍           Selenium IDE:Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能.   Selenium ...

  3. 【javaweb学习】XML和约束模式

    xml:可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系 <?xml version="1.0" encoding="g ...

  4. js null 和 undefined

    undefined是一个特殊类型,null本质上是一个对象 typeof undefined//"undefined"typeof null//"object" ...

  5. Windows一些零碎

    一.端口被占用: 1.netstat -ano |findstr 80 //查看3306端口是否存在 2.tasklist |findstr 3036(PID号)//查看pid为3036的是什么程序在 ...

  6. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  7. Intellij 常用技巧-持续更新

    1.快速输入 System.out.println(); sout [TAB] 2.删除Module ctrl+alt+shift+s 调出  Project Structure ,也可点击菜单Fil ...

  8. oracle 查询结果集运算

    intersec:交集minus:差集union:进行表连接后会筛选掉重复的记录,表连接之后对结果进行排序运算,删除重复记录在返回结果. union all:只是简单的将两个结果合并就返回.无论是否有 ...

  9. linear-gradient----渐变

    CSS3 渐变(gradient)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使用图像来实现这些效果,现在通过使用 CSS3 的渐变(gradients)即可实现.此外,渐变效果的 ...

  10. Javascript Promise入门

    是什么? https://www.promisejs.org/ What is a promise? The core idea behind promises is that a promise r ...