Bash Shell Scripting
Jump to navigation
Jump to search
General
- at the top of your script, put "set -v" and set -x" to add verbosity and echo to your script
- Quick Comprehensive scripting tutorial - LEARN EVERYTHING IN HERE!
- Bash Pitfalls This page shows common errors that Bash programmers make.
Special Variables
- $? = the return value of the previous command
- $! = PID (process ID) of last job run in background
- $_
Passing Arguments
- Have immediate access to the first 9 args passed via $0, $1, $2, $3 ... $9
- $# = the number of arguments passed
- $$ = Expands to the process ID of the shell.
- $* = All of the positional parameters, seen as a single word
- for arg in "$*" # Doesn't work properly if "$*" isn't quoted.
- "Entire arg list seen as single word."
- $@ = Same as $*, but each parameter is a quoted string, that is, the parameters are passed on intact, without interpretation or expansion. This means, among other things, that each parameter in the argument list is seen as a separate word.
- for arg in "$@" # $@ sees arguments as separate words.
- for arg in $* # Unquoted $* sees arguments as separate words.
- The $@ and $* parameters differ only when between double quotes.
- shift = $2 becomes $1, $3 becomes $2 etc. Increments the argument pointer.
More Syntax
- brace expansion {start..end..increment}