rodrigobdz's Shell Style Guide
Opinionated guide on how to organize scripts and which rules to follow while writing them.
We follow a modified version of github/scripts-to-rule-them-all:
utils.sh
- shared functions and variablesscript/bootstrap
- installs all dependenciesscript/setup
- sets up a project to be used for the first timescript/update
- updates a project to run at its current versionscript/build
- builds packagescript/up
- starts appscript/test
- runs testsscript/console
- opens a console for your application.script/cibuild
- invoked by continuous integration servers to run tests
If script targets a specific OS version, add it to the filename after a hyphen. We like hyphens.
Example: script/bootstrap-mac
or script/bootstrap-centos
Executables should have no extension.
Libraries must have a .sh extension and should not be executable.
Source: Google's Shell Style Guide
-
Google Shell Style Guide - Set of best practices, additional to linter use.
Only modifications are:
-
Shebang:
#!/usr/bin/env bash
-
Shell Options:
shopt -s inherit_errexit set -o errexit # Abort script at first error set -o pipefail # Return last non-zero status in pipeline set -o nounset # Exit if any variable is undefined # Optional set -o verbose # Print commands before executing them
-
Source Filenames: We prefer hyphens instead of underscores.
-
-
ShellCheck - Linter
#!/usr/bin/env bash
#
# Install all project dependencies.
shopt -s inherit_errexit
set -o errexit
set -o pipefail
set -o nounset