Verification: a143cc29221c9be0

Php argument from command line

Php argument from command line

How to Pass an Argument to a Shell Script

To pass a parameter to a bash script just write it after the name of the bash script in the terminal:

./my-test-script.sh argument 

How to Pass Multiple Arguments to Shell Script

You can also specify multiple arguments separated by space along with the name of the bash script file:

./my-test-script.sh arg_1 arg_2 arg_3............. arg_n 

We can use the predefined variables to recall these arguments in the bash script. The first argument can be recalled by $1, the second by $2, and so on. The pre-defined variable “$0” refers to the bash script itself. The list of some other important predefined variables is given below:

  • [email protected] : Values of all arguments
  • $# :Total number of arguments
  • $$ : Process ID of the current shell

Now we will use a bash file named animals.sh as an example.

#!/bin/bash

echo "The animal in the first enclosure is: $1"

echo "The animal in the second enclosure is: $2"

echo "The animal in the third enclosure is: $3"

echo "The total number of animals in the zoo are: $#"

Now we will run this script in the terminal:

Parse Command Line Arguments in Shell Script

How to Pass an Argument Containing Space

If an argument consists of multiple words that are separated by space then we need to enclose it in single quotes to pass it as a single argument:

#!/bin/bash

echo "My name is: $1"

Bash Command line Argument with White Space

How to Pass Arguments with Special Characters

We can also pass special characters as arguments. But they need to be written with backslashes before them.

#!/bin/bash

echo "How much money did you spend today: $1"

Shell Script Argument with Special Characters

Passing Arguments Using Flags and Options in Shell Script

Using flags and options is another common way of giving input to a bash script. An option is always followed by a value while flags are not followed by any value.

First, we will make a new bash script that takes two different arguments (options) i.e. -n/--name for name, and -i/--id for an identification number.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/bin/bash

ARGS=$(getopt -a --options n:i: --long "name:,id:" -- "[email protected]")

eval set -- "$ARGS"

while true; do

  case "$1" in

    -n|--name)

      name="$2"

      echo "Name: $name"

      shift 2;;

    -i|--id)

      identification="$2"

      echo "ID: $identification"

      shift 2;;

    --)

      break;;

  esac

done

In the code given above first, we created a variable that stores all the short and long names of our options. On the second line, we evaluated the ARGS variable. Then we used a while loop to assign a block of code to each option.

In the code above shift is used to skip the values of the variables. The digit that follows the shift defines how many variables are skipped.

Shell Script Argument with Flags

Similarly

Shell Script Argument with Full Word Flags

Now we will add a -v flag which prints out a verbose menu:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#!/bin/bash

ARGS=$(getopt -a --options n:i:v --long "name:,id:,verbose" -- "[email protected]")

eval set -- "$ARGS"

while true; do

  case "$1" in

    -n|--name)

      name="$2"

      echo "Name: $name"

      shift 2;;

    -i|--id)

      identification="$2"

      echo "ID: $identification"

      shift 2;;

    -v|--verbose)

      echo "Please use -n/--name or -i/--id to pass name or identification number respectively"

      break;;

    --)

      break;;

  esac

done

Flags are not followed by a colon when they are defined in a bash script because they do not take any argument with them unlike options e.g. the -n option takes a name with it such as Rahul.

Shell Script Argumenet Example 7

Shell Script Argumenet Example 8

Дополнительные сведения

Максимальная длина строки, которую можно использовать в командной строке, — 8191 символ.

Это ограничение применяется к:

  • командная строка
  • отдельные переменные среды, унаследованные другими процессами, такими как переменная PATH
  • все расширения переменных среды

Если для запуска пакетных файлов используется командная подсказка, это ограничение также применяется к пакетной обработке файлов.

Примеры

В следующих примерах покажите, как это ограничение применимо к командам, запускаемой в командной подсказке, и командам, которые используются в пакетном файле.

  • В командной строке общая длина следующей командной строки не может содержать более 8191 символов:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • В пакетном файле общая длина следующей командной строки не может содержать более 8191 символов:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    

    Это ограничение применяется к строкам команд, которые содержатся в пакетных файлах при использовании командной строки для запуска пакетного файла.

  • В командной подсказке общая длина после расширения не может содержать более EnvironmentVariable1 EnvironmentVariable2 EnvironmentVariable3 8191 символов:

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • В пакетном файле общая длина следующей командной строки после расширения параметров не может содержать более 8191 символов:

    ExecutableFile.exe parameter1 parameter2
    
  • Несмотря на то, что ограничение Win32 для переменных среды составляет 32 767 символов, Командная подсказка игнорирует любые переменные среды, унаследованные от родительского процесса и более длинные, чем собственные ограничения в 8191 символы (как это необходимо для операционной системы). Дополнительные сведения о SetEnvironmentVariable функции см. в функции SetEnvironmentVariableA.