The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 2,116 other followers

Passing parameters to a Bash function – Stack Overflow

Posted by jpluimers on 2020/04/20

Since I tend to forget this:

  1. you can declare bash functions with parenthesis
  2. you pass parameters to functions space delimited (often people quote each parameter)
  3. within functions you can refer to parameters by number just like the parameters passed to a shell script

More info at:

I think for functions, you can apply what is linked from Some useful links on bash parameters: $1, $*, $@, quotes, etc., so a loop over all parameters in a function is the same as in a script, see [WayBack] shell – how to loop through arguments in a bash script – Unix & Linux Stack Exchange from Gilles:

There’s a special syntax for this:

for i do
  echo "$i"
done

More generally, the list of parameters of the current script or function is available through the special variable $@.

for i in "$@"; do
  echo "$i"
done

Note that you need the double quotes around $@, otherwise the parameters undergo wildcard expansion and field splitting. "$@" is magic: despite the double quotes, it expands into as many fields as there are parameters.

print_arguments () {
  for i in "$@"; do echo "$i"; done
}
print_arguments 'hello world' '*' 'special   !\characters'    # prints 3 lines
print_arguments ''                                            # prints one empty line
print_arguments                                               # prints nothing
 –jeroen

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 
%d bloggers like this: