In this tutorial, we will be walking through the process of creating a simple CLI tool using the Bash scripting language. The tool will provide a help option, a version information option, and a custom output file option. It's a great start to automating tasks and creating your own tools.
The Script Here is the Bash script we will be discussing:
#!/bin/bash
# A basic boilerplate for a CLI tool using Bash
function show_help() {
cat << EOF
Usage: ${0##*/} [-h] [-v] [-o OUTFILE] [FILE]...
This is a CLI tool template.
-h display this help and exit
-v display version information and exit
-o OUTFILE define the output file. Default is 'output.txt'.
FILE is the name of the file to process.
EOF
}
# Initialize our own variables:
output_file="output.txt"
version="1.0.0"
while getopts "hvo:" opt; do
case "$opt" in
h)
show_help
exit 0
;;
v) echo "Version: $version"
exit 0
;;
o) output_file=$OPTARG
;;
esac
done
shift $((OPTIND-1))
# The rest of the script can go here. For now, let's just echo the output file and remaining arguments:
echo "output_file='$output_file', Remaining args: $@"
Script Breakdown
Shebang (#!/bin/bash)
The first line is called a shebang. It tells the system this script should be executed using Bash.
Help Function
Next, we define a function show_help
that displays the usage of the tool when called. This is typically invoked by the -h
or --help
flags.
Variable Initialization
We then initialize some variables that will be used in the script. output_file
is the name of the output file, which defaults to output.txt
. version
is the current version of the script.
Option Processing
The while
loop uses the getopts
function to process command-line options. In this case, -h
displays the help message, -v
shows the version information, and -o
sets the output file.
Shift Arguments
The shift
command removes the processed options from the argument list, leaving the remaining arguments, which in our case, could be files to process.
Script Body
Lastly, we have the main body of the script. In this case, it simply echoes the name of the output file and any remaining arguments.
Using the Tool
To use this tool, save it as a .sh
file and give it execute permissions with chmod +x scriptname.sh
. Then, you can run it with ./scriptname.sh
. You can pass in -h
to see the help message, -v
to see the version information, and -o outputfile
to set the name of the output file.
Remember to replace "scriptname.sh" with the name of your script.