Skip to main content

Raymii.org Raymii.org Logo

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

Bash Bits: Simple command line arguments

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


❗ This post is over ten 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.

Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below:

I'm developing an open source monitoring app called Leaf Node Monitoring, for windows, linux & android. Go check it out!

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 $200 credit for 60 days. Spend $25 after your credit expires and I'll get $25!

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 , snippets