Bash
Bash (Bourne Again SHell) is a command language and Unix shell. Bash is a
superset of Bourne shell (sh
): commands that work in sh
, also work in
bash
.
When to Use Bash
The Google Shell Style Guide gives advice on when to use shell.
Shell should only be used for small utilities or simple wrapper scripts.
- If you're mostly calling other utilities and are doing relatively little data manipulation, shell is an acceptable choice for the task.
- If you are writing a script that is more than 100 lines long, you should probably be writing it in Python instead.
Variables
# Use uppercase for constants. NAME="Elliot" echo "Hi, ${NAME}" # Use snake_case for variables. count=0 (( count++ )) echo ${count}
Prefer ${var}
over $var
for variable expansion.
Functions
# Use snake_case for function names. greet() { # Declare function-specific variables with 'local'. local name="$1" echo "Hello, ${name}" } greet "Elliot"
Arguments
Use special parameters to access parameters given to the function.
$# |
Number of arguments |
$@ |
All arguments |
$1 |
First argument |
$2 |
Second argument |
Control Flow
if [[ expression ]]; then ... else ... fi
Conditionals
[[ NUM -eq NUM ]] |
Numbers equal |
[[ STRING == STRING ]] |
Strings equal |
[[ ! EXPR ]] |
Not |
[[ X ]] && [[ Y ]] |
And |
[[ X ]] ❘❘ [[ Y ]] |
Or |
[[ -z STRING ]] |
Empty string |
[[ -e FILE ]] |
File exists |
[[ -d FILE ]] |
Directory exists |
Loops
for i in {1..5}; do ... done
Command Substitution
Command substitution is used to insert the output of one command into a second command.
today=$(date) echo "${today}"
Style
Start each file with a shebang and a description the contents.
#!/bin/bash # # Display an example.
Executables (chmod +x file
) should have no extension.