PHP命令行脚本接收传入参数的三种方式
转自:https://www.jb51.net/article/54015.htm
通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
一、使用$argv or $argc参数接收
<?php /** * 使用 $argc $argv 接受参数 */ echo "接收到{$argc}个参数"; print_r($argv);
执行
[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);
执行
[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
请输入您的博客名:
抱歉,博客名不能为空,请重新输入您的博客名:脚本之家
您输入的信息是:脚本之家
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/11392178.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/11392178.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义