Raymii.org
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