设为首页 收藏本站
查看: 1089|回复: 0

[经验分享] PHP命令行脚本接收传入参数的三种方式

[复制链接]

尚未签到

发表于 2017-12-31 08:33:45 | 显示全部楼层 |阅读模式
  通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
  一、使用$argv or $argc参数接收
复制代码代码如下:  <?php
  /**
  * 使用 $argc $argv 接受参数
  */
  echo "接收到{$argc}个参数";
  print_r($argv);
  执行
复制代码代码如下:
[iyunv@DELL113 lee]# /usr/local/php/bin/php test.php

  接收到1个参数Array
  (
[0] => test.php

  )
[iyunv@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

  )
[iyunv@DELL113 lee]#

  二、使用getopt函数
复制代码代码如下:  <?php
  /**
  * 使用 getopt函数
  */
  $param_arr = getopt('a:b:');
  print_r($param_arr);
  执行
复制代码代码如下:
[iyunv@DELL113 lee]# /usr/local/php/bin/php test.php -a 345

  Array
  (
[a] => 345

  )
[iyunv@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3

  Array
  (
[a] => 345

=> 12q3

  )
[iyunv@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3 -e 3322ff

  Array
  (
[a] => 345

=> 12q3

  )
  三、提示用户输入
复制代码代码如下:  <?php
  /**
  * 提示用户输入,类似Python
  */
  fwrite(STDOUT,'请输入您的博客名:');
  echo '您输入的信息是:'.fgets(STDIN);
  执行
复制代码代码如下:
[iyunv@DELL113 lee]# /usr/local/php/bin/php test.php

  请输入您的博客名:脚本之家 www.iyunv.net
  您输入的信息是:脚本之家 www.iyunv.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";
  执行
复制代码代码如下:
[iyunv@DELL113 lee]# /usr/local/php/bin/php test.php

  请输入您的博客名:
  抱歉,博客名不能为空,请重新输入您的博客名:脚本之家
  您输入的信息是:脚本之家

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430194-1-1.html 上篇帖子: PHP基于websocket实时通信的实现 下篇帖子: PHP 中Session 反序列化机制的三种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表