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