在 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