I store my ksh script config settings externally and separate them by colons; you can change the cut delimiter to a comma. When needed in the process I call the following parse_parms function and set the requisite number of parms. Might not be optimal, but it's quick like a bunny and it keeps my logging:
###########################
# function Parse_Parms ...
# - Parse arguments based on ${my_mthd} arg...
function parse_parms
{
$_dbg_mode
print "\n\tGreetings from parse_parms ($@) " >>${MY_LOG}
2>&1
print "\n\tParsing parms per config file: ${config_file}" >>${MY_LOG}
export args_rcd=$(grep -i "^${my_mthd}:" ${config_file} |grep -v "#" |tr
" " "_" )
typeset -i parms_count=$(print $(print ${args_rcd} |tr ":" "\n" |wc -l )
+ 0 |bc )
typeset -i arg_num="1"
while (( ${arg_num} <= ${parms_count} ))
do
print "Setting arg_num${arg_num}: "
export param_num${arg_num}=$(print "$(echo "${args_rcd}" |cut -d":"
-f${arg_num} )")
arg_num=$(print "${arg_num} + 1" |bc )
done
print "\tFinished Parsing your args..." >>${MY_LOG}
# If there are no explicitly set params, then there's nothing to
do...exit...
if [[ $(set |grep param_num ) == "param_num1=''" ]]
then
print "\n ***\n ${my_name}: $(date) " |tee -a
${MY_LOG}
print " Parameters not found for ${my_mthd}..." |tee -a
${MY_LOG}
print " " |tee -a
${MY_LOG}
print " Called as: $0 ${*} \n ***\n" |tee -a
${MY_LOG}
error_flag='Y' ; logger_heads ; return 2
# Print the list of params otherwise...
else
# If this is an FTP process, then hide the password string...
if [[ ${my_mthd} == "ftp" ]]
then
typeset -l passed_word='[hidden]'
fi
print "\n\tCalled as: $0 ${@} \n" \
"\tParameters: ${param_num1} \n " \
"\t ${param_num2:-"#"} \n " \
"\t ${param_num3:-"#"} \n " \
"\t ${passed_word:-${param_num4}} \n " \
"\t ${param_num5-"#"} \n " \
"\t ${param_num6-"#"} \n " \
"\t ${param_num7-"#"} \n " \
"\t ${param_num8-"#"} \n " \
"\t ${param_num9-"#"} \n " \
"\t ${param_num10:-"#"} \n " \
"\t ${param_num11:-"#"} \n " \
"\t ${param_num12:-"#"} \n " \
"\t ${param_num13:-"#"} \n " \
"\t ${param_num14:-"#"} \n " \
"\t ${param_num15:-"#"} \n " |grep -v "#" \
|tee -a
${MY_LOG}
fi
echo "nicely done"
return
}