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 7.3.0All files located within this project provide the basic structure/blueprint for creating new Bash script projects. The structure is organized as follows:
├── 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 │ └── main.sh # The global/project settings for easy manipulation/tweaking. ├── .gitignore # The Git list of folders and files to ignore. ├── LICENSE.adoc # The license and copyright legalities of the project. └── README.adoc # The project overview, setup, usage, testing, etc.
The following documents what each template option is:
# Abort script at first error when a command exits with non-zero status.# Alias: `set -e`.set -o errexit
# Exit, with error message, when attempting to use an undefined variable.# Alias: `set -u`.set -o nounset
# 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'Consider using Bats.
Engineered by Brooke Kuhlmann.