Check that there are at least two arguments given in a bash script

Use the $# special variable. Its value is the number of arguments. So if you have a script that contains only:

echo $#

and execute it like this:

thatscript foo bar baz quux

It'll print 4.

In your case you may want to do something like:

if [ $# -lt 2 ]; then
    # TODO: print usage
    exit 1
fi

Going by the requirement from the question that the arguments should contain "at least 2 things", I think it might be more accurate to check:

if (( $# < 2 )); then
    # TODO: print usage
    exit 1
fi

Using arithmetic expansion (( )) will prevent this from hitting exit 1 for any value not equal to 2.

If you use if [ $# -ne 2 ]; it will trigger the conditional for any number of arguments other than 2.

Edit: It looks like the accepted answer has been updated to include an equivalent (and more portable?) example of this.

Tags:

Linux

Bash