shell执行PHP时,传参的三种方式

php执行http请求时,可以使用GET或POST请求,但在shell命令行下无法使用。
以下为命令行下的三种传值方式

一、使用 $argv & $ $argc 参数接收

$argc:传递到脚本的参数数目 Manual
$argv:传递给脚本的参数数组 Manual
注意:

  • 这两个变量仅在register_argc_argv打开时可用
  • 第一个参数总是当前脚本的文件名

php代码

<?php
    var_dump($argc);
    var_dump($argv);

shell命令

    //sh命令
    php index.php a b c
    //结果
    Array(
        [0] => index.php
        [1] => a
        [2] => b
        [3] => c
    )

二、使用getopt函数

getopt(): 从命令行参数列表中获取选项

    // 使用格式
    array getopt ( string $options [, array $longopts [, int &$optind ]] )
    //参数
   1.options : 该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符(-)开头。 比如,一个选项字符串 "x" 识别了一个选项 -x。 只允许 a-z、A-Z 和 0-9。
          1.1单独的字符(不接受值)
          1.2后面跟随冒号的字符(此选项需要值)
          1.3后面跟随两个冒号的字符(此选项的值可选)
    2.longopts:选项数组。此数组中的每个元素会被作为选项字符串,匹配了以两个连字符(--)传入到脚本的选项。 例如,长选项元素 "opt" 识别了一个选项 --opt。
    3.optind:如果OPTIND参数存在,那么指数参数解析停止将写入该变量。
 //注意:选项的值不接受空格(" ")作为分隔符。

php代码

<?php 
    $params = getopt("a:b:");
    var_dump($params);

shell命令

//sh命令
php index.php -a 1 -b 2
//结果
array(
    [a] => 1
    [b] => 2
)

三、提示用户输入

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

php代码

<?php
// 提示用户输入,类似Python
$fs = true;
do{
    if($fs){
        fwrite(STDOUT,'请输入您的博客名:');
        $fs = false;
    }else{
        fwrite(STDOUT,'抱歉,博客名不能为空,请重新输入您的博客名:');
    }
    $name = trim(fgets(STDIN));
}while(!$name);
 
echo '您输入的信息是:'.$name."\r\n";

shell命令行

    [root@DELL113 lee]# /usr/local/php/bin/php test.php 
    请输入您的名称: test
    您输入的信息是: test

转载于:https://my.oschina.net/17cto/blog/1563155

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值