title: Syntax with pound and percent sign after shell parameter name
body: <p>Please explain the following syntax:</p>
  
  <pre><code>  i##*.
  
    i%.*   
  </code></pre>
  
  <p>I understand what it's doing, but I want to know the general pattern (why/how is it doing so).</p>
  
  <p>Code where it appears:</p>
  
  <pre><code>#!/bin/bash
  
  recursive_name_change()
  {
      cd "$1"
      for i in *
      do
          #echo "${i##*.}"
          if [ -d "$i" ]
          then
              recursive_name_change "$i"
          elif [ "${i##*.}" = "cpp" ]
          then
               new_name=${i%.*}".c"
          mv "$i" "$new_name"
          fi
          done
          cd ../
      }
  
  recursive_name_change .
  </code></pre>
  
  <p>Someone please also suggest, where can I find these peculiar syntax forms from?</p>