PHP命令列指令碼接收傳入引數的三種方式

2021-06-26 20:42:38 字數 1833 閱讀 7861

通常php都做http方式請求了,可以使用get or post方式接收引數,有些時候需要在shell命令下把php當作指令碼執行,比如定時任務。這就涉及到在shell命令下如何給php傳參的問題,通常有三種方式傳參。

一、使用$argv or $argc引數接收

複製**

**如下:

<?php

/*** 使用 $argc $argv 接受引數 */

echo "接收到個引數";

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

請輸入您的部落格名:***

您輸入的資訊是:***

你也可以這麼幹,不讓使用者輸入空資訊

複製**

**如下:

<?php

/*** 提示使用者輸入,類似python */

$fs = true;

doelse

$name = trim(fgets(stdin));

}while(!$name);

echo '您輸入的資訊是:'.$name."\r\n"; 執行

複製**

**如下:

[root@dell113 lee]# /usr/local/php/bin/php test.php 

請輸入您的部落格名:

抱歉,部落格名不能為空,請重新輸入您的部落格名:ddd

您輸入的資訊是:ddd

php PHP命令列指令碼接收傳入引數的三種方式

通常php都做http方式請求了,可以使用get or post方式接收引數,有些時候需要在shell命令下把php當作指令碼執行,比如定時任務。這就涉及到在shell命令下如何給php傳參的問題,通常有三種方式傳參。一 使用 argv or argc引數接收 複製 如下 使用 argc argv ...

Shell指令碼接收來自命令列傳入的引數

寫乙個簡單的傳引數指令碼來測試 bin bash if 1 start then echo do start elif 1 stop then echo do stop else echo pleasemake sure the positon variable is start or stop.f...

PHP從命令列接收引數

昨天,在牛客網做華為機試題,不太熟悉它的環境,吃了大虧。測試樣例是通過標準輸入輸入的,執行結果是通過標準輸出輸出的。標準輸入就是鍵盤,標準輸出就是顯示器。經過大量實踐,發現fscanf 最好用,沒有之一!mixed fscanf resource handle,string format mixed...