Bash Bits: Simple command line arguments

30-12-2013 | Remy van Elst


Table of Contents


Bash Bits are small examples and tips for Bash Scripts. This bash bit shows you how to add command line arguments to your script. It is very simple, non-positional and does not use getopts.

All Bash Bits can be found using this link

Sometimes a script need to have a variable which you don't know on forehand or can change later. Or you have a script which works on a file, therefore you need a filename. For example, when you have a script that adds a watermark to an image. It is nice if you can give both the filename and the watermark as parameters to the script.

Note that this is very very simple. The arguments must be given in order and it does not support parameters like --file/-f. If you need something quick and simple, this is very usable, if you need something more advanced it might be better to take a look at getopts or shift.

The following example takes one required parameter, and one optional one. If the first (filename) is not given, an error message plus usage is printed and the script exits. A second parameter can be given but is optional. If that is not given the script will use the default.

By using the -z option in the if statement, we check if the variable is null, that is, has zero length.

if [[ -z "${1}" ]]; then
    echo -e "[ERROR] Please give a filename to watermark and an optional watermark. Otherwise the default is used."
    echo -e "${0} example.jpg"
    exit 255

else
    FILE="${1}"
fi

if [[ -z "${2}" ]]; then
    WATERMARK="Picture Watermark"

else
    WATERMARK="${2}"
fi

Tags: arguments, bash, bash-bits, getopts, parameters, shell,