Bash Function: Find Number Of Arguments Passed

by on April 24, 2013 · 1 comment· LAST UPDATED April 24, 2013

in , ,

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.

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsBash
Estimated completion timeN/A
[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.

Example

Create a shell script as follows:

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

Run it as follows:
$ chmod +x script.name.here
$ ./script.name.here

Sample outputs:

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

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

See also
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 1 comment… read it below or add one }

1 Z. May 8, 2013 at 1:14 am

Try using the special variable ${#}.

function foo {
echo “N. of Args: ${#}”
}

$ foo a b c
3

Reply

Leave a Comment

Tagged as: ,

Previous Faq:

Next Faq: