Bash Function: Find Number Of Arguments Passed

How do I find out number of arguments passed to my bash function called foo() under Unix like operating systems?

Each bash shell function has the following set of shell variables:

[a] All function parameters or arguments can be accessed via $1, $2, $3,..., $N.

[b] $* or $@ holds all parameters or arguments passed to the function.

[c] $# holds the number of positional parameters passed to the function.

[d] An array variable called FUNCNAME ontains the names of all shell functions currently in the execution call stack.


Create a shell script as follows:

# Purpose: Demo bash function
# Author: SXI LLC
# -----------------------------
## Define a function called foo()
  echo "Function name:  ${FUNCNAME}"
  echo "The number of positional parameter : $#"
  echo "All parameters or arguments passed to the function: '$@'"
## Call or invoke the function ##
## Pass the parameters or arguments  ##
foo 1 2 3 4 5
foo "this" "is" "a" "test"

Run it as follows:
$ chmod +x
$ ./

Sample outputs:

Fig.01: Bash function displaying number of arguments passed to foo()

See also

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Comments are closed, but trackbacks and pingbacks are open.