UNIX中交互程序的自动执行

发表于:2007-07-01来源:作者:点击数: 标签:
在 UNIX 系统中,执行交互程序,要求用户通过键盘输入相应数据,完成相应的操作。有时这种交互操作,输入的内容有一定的规律可循,且输入的数据较大。这种操作,用户感到枯燥无味,费工费时,容易产生疲劳,差错在所难免。如在我单位人保系统财务数据集中过
   在 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

原文转自:http://www.ltesting.net