[关闭]
@Chiang 2020-04-25T11:58:20.000000Z 字数 1317 阅读 689

shell执行PHP传入参数的三种方式

PHP Shell 2020-02


有些时候需要在shell命令下执行PHP脚本,比如定时任务。这就涉及到在shell命令下如何给PHP传参的问题,通常有三种方式传参

使用$argv $argc参数接收

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

Example

  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. $param_arr = getopt('a:b:');
  6. print_r($param_arr);

Example

  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);

Example

  1. [root@DELL113 lee]# /usr/local/php/bin/php test.php
  2. 请输入您的博客名:Nicholas Lee www.qttc.net
  3. 您输入的信息是:Nicholas Lee www.qttc.net

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

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

Example

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

参考资料:
shell执行PHP传入参数的三种方式

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注