lukas@ihlpf.ATT.COM (00704a-Lukas) (07/08/88)
I wrote a ksh program to process a file, and, recursively, any included files. I ran into a problem that I overcame, but do not fully understand. Im hoping that someone out there in netland can provide an explanation or reference. I am running under uts unix, ksh version 06/03/86a. My (much reduced) command nacro: cmd=$0 solist=/tmp/$$solist file=$1 echo $file >/dev/tty sed -n -e "s/^\\.so //p" $file >$solist exec 5<$solist while read -u5 sofil; do eval "$cmd $sofil" done Now, issuing "nacro 5b", with file 5b as: This is ackronym FOO. .so tbl1 .so tbl2 .so tbl3 and files tbl1, tbl2: This is "TBL1". This is "TBL2". I expected to see (from the "echo $file" command): 5b tbl1 tbl2 Instead, I see: 5b tbl1 tbl2 tbl2 And, if I add a ".so tbl3" to the end of 5b, the crazy thing loops, as in: 5b tbl1 tbl2 tbl3 tbl1 tbl2 tbl3 etc. I came to the conclusion that the problem had something to do with the "exec 5<" and "read"; it seemed that the child "exec 5" was affecting the parent, although not in a way in which I was able to deduce the exact cause. I modified nacro with the statements "cat $solist |&" and "read -p sofil", and nacro now works fine. My main concern is that my understanding of the use of "exec" and "read" is so poor that I may lead myself into other pitfalls (debugging this problem took several hours). Can anyone help? TIA -- John Lukas ihnp4!ihlpf!lukas 312-510-6290