简体   繁体   中英

How to pass a parameters on the command line?

I want to run a PHP program from a shell script, passing parameters each time and getting them with $_GET["DBF"] . For example:

$ php prog.php?DBF=clients
$ php prog.php?DBF=suppliers

How can I do this? The above syntax does not work.

You call a script with parameters like this: php prog.php DBF=clients

No HTTP request is made, so $_GET etc. will not be available. As stated in the PHP documentation for CLI usage $argv will hold the parameters for your script.

$argv[0] is the script name itself, $argv[1] is the first parameter etc.

parse_str() the parameter:

#!/usr/bin/php
<?php

// $argv[0] will hold the script name
// $argv[1] will hold the first argument

// print_r($argv[1]);

// parse the first argument
parse_str($argv[1], $arg);
// print_r($arg);

if(isset($arg['DBF']) && $arg['DBF'] == 'clients') {
    // Do something for the clients
    echo "Clients stuff";
    echo "\n";
} else if(isset($arg['DBF']) && $arg['DBF'] == 'suppliers') {
    // Do something for the suppliers
    echo "Suppliers stuff";
    echo "\n";
}

The $_GET and $_POST variables are superglobals that are created only when PHP is being used to process web requests via a server like Apache.

If you are running PHP from the command line, you can add your variable "DBF" as an argument after the script name:

$ php prog.php clients

To access commandline variables, call the $argv variable, which is an array. The first item in the array is the name of the script, and the following items are whatever arguments you appended to the command line request:

array(2) {
  [0]=>
  string(8) "prog.php"
  [1]=>
  string(4) "clients"
}

Reference: https://www.php.net/manual/en/reserved.variables.argv.php

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM