Bashsmith is a project template for smithing new Bash shell-based projects based on best practices. This project is meant to be cloned and customized for your specific shell scripting needs giving you a foundation from which to get started faster than with an empty slate.
Provides default project structure for creating new Bash projects.
Provides default settings for making Bash scripts easier to develop and debug.
To install, run:
git clone https://github.com/bkuhlmann/bashsmith.git cd bashsmith git checkout 5.2.5
All files located within this project provide the basic structure/blueprint for creating new Bash script projects. The structure is organized as follows:
├── CHANGES.adoc # The details of past version releases. ├── CODE_OF_CONDUCT.adoc # Guidelines for encouraging harassment-free contributions. ├── CONTRIBUTING.adoc # The details of how to contribute to the project. ├── LICENSE.adoc # The license and copyright legalities of the project. ├── README.adoc # The project overview, setup, usage, testing, etc. ├── bin # A folder for executable Bash scripts. │ └── run # The main run script (which loads the lib and settings). ├── lib # A folder for Bash functions and custom code. │ └── cli.sh # Provides CLI prompt options for the main `run` script. ├── settings # The global/project settings for easy manipulation/tweaking. │ └── main.sh # The global settings (set with safe defaults).
The following documents what each template option is:
# Exit, with error message, when attempting to use an undefined variable. # Alias: `set -u`. set -o nounset # Abort script at first error when a command exits with non-zero status. # Alias: `set -e`. set -o errexit # Return exit status of the last command in the pipe that returned a non-zero return value. set -o pipefail # Defines newlines and tabs as delimiters for splitting words and iterating arrays. IFS=$'\n\t'
For debugging purposes, you can add the following option:
# Prints all executed commands. # Alias: `set -x`. set -o xtrace
The above is useful for debugging purposes but probably not something you want always enabled.
💡 For additional options, use
help set to learn more.
To contribute, run:
git clone https://github.com/bkuhlmann/bashsmith.git cd bashsmith
Consider using Bats.
Engineered by Brooke Kuhlmann.