All pastes #421684 Raw Edit

Mine

public text v1 · immutable
·published 2007-04-02 23:41 UTC
rendered paste body
Situation:
I am parsing a conf file with the snippet below:
    241 exec 3<&0
    242 exec 0<"$CONFIG_FILE"
    243 
    244 #process the config file.
    245     
    246 while read line
    247 do  
    248     if [ "${line:0:1}" != '#' ]; then   # first letter isn't #
    249     {
    250         echo "iter"
    251         process_conf $line;
    252     }
    253     fi
    254 done
    255 
    256 exec 0<&3
process_conf looks like so:
    209 process_conf ()
    210 {
    211     line_in="$@"
    212     echo "$line_in" 1>&2
    213     copy_log $line_in
    214     move_log $line_in
    215     delete_old_log $line_in
    216 }

The problem is in delete_old_log.  Line 181 breaks the iteration over the lines in the conf... it only runs the first call to process_conf.
If I comment out the ${SSH_FULL}, the iterations in the first section I pasted continue fine.  I initially thought I may be clobbering the file descriptor I was readin the config from with the output redirection, but doing the same thing with echo (see the commented out line on 182) does not produce the same problem.
    164 delete_old_log ()
    165 {
    166     name_tag="$1"
    167     log_src="$5"
    168 
    169     if [ -n "${skip_this_file}" ]; then
    170     {
    171         copy_running=
    172         skip_this_file=
    173         current_temp_log=
    174         return
    175     }
    176     fi
    177 
    178     # DELETE the old file here if they are the same.
    179 
    180     SSH_FULL="${SSHCMD} -p ${ssh_port} ${log_user}@${log_server}"
    181     ${SSH_FULL} "${MD5} ${log_src}" > "${TMPDIR}/tmp.$$"
    182     #echo "hi" > "${TMPDIR}/tmp.$$"
    183 
    184     remote_md5=`cat ${TMPDIR}/tmp.$$ | ${AWK} '{print $1}'`
    185     ${RM} -f "${TMPDIR}/tmp.$$"
    186     local_md5=`$MD5 "${final_log}" | awk '{print $1}'`
    187 
    188     if [ "${remote_md5}" = "${local_md5}" ];
    189     then
    190     {
    191         echo "${name_tag}: `date` - Deleted old log ${log_src}." 1>&2
    192     #   ${SSH_FULL} "rm -f ${log_src}" > /dev/null 2>&1
    193     }
    194     else
    195     {
    196         echo "${name_tag}: `date` - MD5SUM mismatch between ${log_src} and ${final_log}.  Skipping delete!"
    197     }
    198     fi
    199 
    200     echo "delete complete"
    201     # cleanup prior to exit;
    202     final_log=
    203     copy_running=
    204     skip_this_file=
    205     current_temp_log=
    206     echo "next file..."
    207 }