Skip to main content Logo

Quis custodiet ipsos custodes?
Home | About | All pages | Cluster Status | RSS Feed | Gopher

Bash Bits: Simple command line arguments

Published: 30-12-2013 | Author: Remy van Elst | Text only version of this article

❗ This post is over seven years old. It may no longer be up to date. Opinions may have changed.

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.

Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.

You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $100 credit for 60 days.

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


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

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