What do $? $0 $1 $2 mean in shell script? [duplicate]
Asked Answered
K

2

120

I often come across $? $0 $1 $2 etc.... in shell scripting, what I know is that $? returns the exit status of the last command

echo "this will return 0"
echo $?

but what do the others do? what are they called and is there more? perhaps like $3 $4 $5 ...

Kendall answered 25/3, 2015 at 14:33 Comment(1)
tldp.org/LDP/abs/html/othertypesv.htmlHaircut
D
213

These are positional arguments of the script.

Executing

./script.sh Hello World

Will make

$0 = ./script.sh
$1 = Hello
$2 = World

Note

If you execute ./script.sh, $0 will give output ./script.sh but if you execute it with bash script.sh it will give output script.sh.

Deckard answered 25/3, 2015 at 14:34 Comment(0)
P
34

They are called the Positional Parameters.

3.4.1 Positional Parameters

A positional parameter is a parameter denoted by one or more digits, other than the single digit 0. Positional parameters are assigned from the shell’s arguments when it is invoked, and may be reassigned using the set builtin command. Positional parameter N may be referenced as ${N}, or as $N when N consists of a single digit. Positional parameters may not be assigned to with assignment statements. The set and shift builtins are used to set and unset them (see Shell Builtin Commands). The positional parameters are temporarily replaced when a shell function is executed (see Shell Functions).

When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces.

Pimbley answered 25/3, 2015 at 14:35 Comment(1)
$? is a special parameter which are explained here: gnu.org/software/bash/manual/bash.html#Special-ParametersDefault

© 2022 - 2024 — McMap. All rights reserved.