The total number of supplied command-line arguments is hold by a in bash’s internal variable $#
. Consider a following example of simple bash script which will print out a total number of supplied command-line arguments to the STDOUT:
#!/bin/bash echo $#
Save the above into a file called eg. arguments.sh
and execute:
$ bash arguments.sh 1 2 3 4 4
From the above we can see that four arguments separated by space have been supplied to our script namely 1 2 3 4
. During the script’s execution a content of the internal variable $#
had been printed out.
When writing a script you sometime need to force users to supply a correct number of arguments to your script. Using the above mentioned internal variable $#
and if statement this can be achieved as shown below:
#!/bin/bash if [ "$#" -ne 2 ]; then echo "You must enter exactly 2 command line arguments" fi echo $#
The above script will exit if the number of argument is not equal to 2.
$ bash arguments.sh 1 You must enter exactly 2 arguments $ bash arguments.sh 1 2 3 4 You must enter exactly 2 arguments $ bash arguments.sh 1 2 2