php执行http请求时,可以使用GET或POST请求,但在shell命令行下无法使用。
以下为命令行下的三种传值方式
一、使用 $argv & $ $argc 参数接收
- 这两个变量仅在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
来源:oschina
链接:https://my.oschina.net/u/3472697/blog/1563155