= Shell Variables = For a list of special variables are used internally by the shell, see [[Shell/ShellVariables|here]]. <> ---- == Declaring == Variables are declared with an equals sign (`=`). {{{ a=1 b=2 c=3 }}} Note that variables can be set to an empty value, and this is distrinct from not being set. {{{ d= }}} ---- == Usage == Variables are accessed by their name. A dollar sign (`$`) must be prefixed to the name. {{{ a=foo b=$a # 'foo' }}} To delimit a variable name from string literals, use braces. For example: {{{ a=foo b=${a}bar # 'foobar' }}} If a variable's value includes a character that the shell will interpret specially, [[Bash/Quoting|quote]] the variable. {{{ a=foo b="$a bar" # 'foo bar' }}} ---- == Special Variables == The following variables are set automatically by `bash(1)`. ||'''Variable'''||'''Value''' || ||`$#` ||number of arguments || ||`$@` ||all argument tokens || ||`$*` ||all arguments as a single token || ||`$?` ||the exit code || ||`$$` ||the PID of the shell || ||`$!` ||the PID of the most recent background job|| === Positional Variables === The name of a command is stored in `$0`. The first argument to the command is stored in `$1`. And so on until the 9th argument, `$9`. From the tenth argument, while arguments are stored in an indexed variable, they must be accessed differently. `$10` is interpretted like `${1}0`. To actually access the 10th argument, try `${10}`. ---- CategoryRicottone