Bash Style Guide
Apply the Bash conventions from ./references/BASH.md when creating or editing Bash scripts.
Key Conventions
Read ./references/BASH.md for the complete guide. Summary:
Script Structure
- Shebang:
#!/usr/bin/env bash - Strict mode:
set -euo pipefail - Main function called at end:
main "${@}"
Naming
- Functions:
snake_case - Local variables:
lower_case - Constants:
ALL_CAPSwithreadonly
Syntax
- Variable expansion:
${var}not$var - Command substitution:
$(...)not backticks - Tests:
[[...]]not[...] - Function syntax:
function name() { }with both keyword and parentheses
Quoting
- Always quote variable expansions:
"${var}" - Always quote command substitutions:
"$(cmd)" - Use arrays for lists, not word splitting
Local Variables
- Declare with
local - Separate declaration from command substitution to preserve exit codes
Validation
Whenever possible, validate the script before finishing. Prefer using a project-specific validation script, if available. Common locations include declarations in package.json and scripts stored in bin/. If those aren't present, shellcheck is a commonly available linter for Bash scripts.