title: Indirect parameter substitution in shell script
body: <p>I'm having a problem with a shell script (POSIX shell under HP-UX, FWIW).  I have a function called print_arg into which I'm passing the name of a parameter as $1.  Given the name of the parameter, I then want to print the name and the value of that parameter.  However, I keep getting an error.  Here's an example of what I'm trying to do:</p>
  
  <pre><code>#!/usr/bin/sh
  
  function print_arg
    {
    # $1 holds the name of the argument to be shown
  
    arg=$1
  
    # The following line errors off with
    #   ./test_print.sh[9]: argval=${"$arg"}: The specified substitution is not valid for this command.
  
    argval=${"$arg"}
  
    if [[ $argval != '' ]] ; then
      printf "ftp_func: $arg='$argval'\n"
    fi
    }
  
  COMMAND="XYZ"
  
  print_arg "COMMAND"
  </code></pre>
  
  <p>I've tried re-writing the offending line every way I can think of.  I've consulted the local oracles.  I've checked the online "BASH Scripting Guide".  And I sharpened up the ol' wavy-bladed knife and scrubbed the altar until it gleamed, but then I discovered that our local supply of virgins has been cut down to, like, nothin'.  Drat!</p>
  
  <p>Any advice regarding how to get the value of a parameter whose name is passed into a function as a parameter will be received appreciatively.</p>