Variables in Bash
Set variables, export to child processes, and use positional parameters.
Setting and reading
name="Ada"
echo "$name"
No spaces around = when assigning.
Exporting and environment
export API_URL="https://api.example.com"
# child processes see exported vars
node app.js
Local variables (functions)
myfn() {
local count=0
echo "$count"
}
Positional parameters and $#/$@/$*
# script.sh a b c
echo "$#" # number of args
for x in "$@"; do echo "$x"; done
Use "$@" to preserve argument boundaries; avoid $*.
Special parameters
$?: exit status of last command$$: current PID$!: last background PID$0: script name
Parameter expansion basics
user=${USER:-guest} # default
msg=${msg:=hello} # assign default
trim=${s%/} # remove suffix pattern
upper=${name^^} # uppercase (bash)
Summary
- Assign with
name=value, quote expansions, export when needed, and prefer"$@"for args