title: What is the use of $# in Bash
body: <p>I am very new to Bash scripting, can someone explain to me how the $# and $? work in the following code? </p>
  
  <pre><code>#!/bin/bash
  
  ARGS=3         # Script requires 3 arguments.
  E_BADARGS=85   # Wrong number of arguments passed to script.
  
  if [ $# -ne "$ARGS" ]
  then
    echo "Usage: `basename $0` old-pattern new-pattern filename"
    exit $E_BADARGS
  fi
  
  old_pattern=$1
  new_pattern=$2
  
  if [ -f "$3" ]
  then
      file_name=$3
  else
      echo "File \"$3\" does not exist."
      exit $E_BADARGS
  fi
  
  exit $? 
  </code></pre>