红联Linux门户
Linux帮助

UNIX中交互程序的自动执行

发布时间:2006-02-23 00:48:11来源:红联作者:cha
   在 UNIX 系统中,执行交互程序,要求用户通过键盘输入相应数据,完成相应的操作。有时这种交互操作,输入的内容有一定的规律可循,且输入的数据较大。这种操作,用户感到枯燥无味,费工费时,容易产生疲劳,差错在所难免。如在我单位人保系统财务数据集中过程中,要逐月逐分公司生成财务数据上报,执行程序 stmu3, 出现画面1;
   选 B 执行数据传送和接收,出现画面2;
   选 A 生成数据传送文件,出现画面3;
  按回车:出现画面4。
   用户输入 /tmp,将生成的上报数据文件放在UNIX的 /tmp 目录下,接着按回车键结束操作。
   以上是对一个公司的一个月的数据进行的操作。现在要对所辖所有分公司,同时从2000年1月到2001年6月共18个月全部要进行相应的操作,因此工作量较大。
   对这些相同的操作,能否将它存放在一个文本文件中,利用UNIX中的输入输出重定向的功能,自动执行上面的操作呢?本人经过实践,成功地解决了这个问题,现介绍如下:
   1.根据上述操作,编写文本文件 stmu3_cmd 如下:
BA
/tmp
   在用 vi 编辑时,要按照原来按键顺序,忠实地记录。
   2.在用户的HOME目录下,执行命令:
stmu3 < stmu3_cmd
   以上实现了一个公司一个月的数据的生成工作。如要对所辖公司实现上述同一操作,则需对公司进行循环。
   假如各公司对应一个目录,如下:
   tj0801
   tj0802
   tj0821
   ......
   tj0885
   3.对公司进行循环:
HHOME=/progb
export HHOME
cd HHOME
for I in tj*
do
cd $HHOME/$I
stmu3 < stmu3_cmd
done
   要对月份进行循环,可将要生成的月份放在文件 sys_date 中,如:
   20010101
   20010201
   20010301
   ......
   20011201
   4.对月份进行循环:
HHOME=/progb
export HHOME
cd HHOME
for j in `cat sys_date`
do
for i in tj*
do
cd $HHOME/$I
echo $j > sysdate
stmu3 < stmu3_cmd
done
done
文章评论

共有 0 条评论