This question already has an answer here:

You can write a bash functions several ways:

function JoinStrings {


function JoinStrings () {


JoinStrings () {

Is there any difference between these functions? Why are there 3 different ways to write a function in bash? (Are there more ways to write function?)

marked as duplicate by cuonglm bash Dec 4 '15 at 1:56

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • One important point is that name() {...} is POSIX, and more universal. Since all notations accomplish the same thing, I prefer to use the most portable (universal) notation as specified by POSIX. – RobertL Dec 4 '15 at 3:38

man bash says:

Shell Function Definitions
   A  shell function is an object that is called like a simple command and exe‐
   cutes a compound command with a new set  of  positional  parameters.   Shell
   functions are declared as follows:

   name () compound-command [redirection]
   function name [()] compound-command [redirection]
          This  defines  a  function named name.  The reserved word function is
          optional.  If the function reserved word is supplied, the parentheses
          are  optional.  The body of the function is the compound command com‐
          pound-command (see Compound Commands above).  That command is usually
          a  list  of  commands  between { and }, but may be any command listed
          under Compound Commands above.  compound-command is executed whenever
          name  is  specified  as  the name of a simple command.  When in posix
          mode, name may not be the name of one of the POSIX special  builtins.
          Any redirections (see REDIRECTION below) specified when a function is
          defined are performed when the function is executed.  The exit status
          of  a  function  definition is zero unless a syntax error occurs or a
          readonly function with the same name already exists.  When  executed,
          the  exit status of a function is the exit status of the last command
          executed in the body.  (See FUNCTIONS below.)

In short, no there is no difference.

Not the answer you're looking for? Browse other questions tagged or ask your own question.