|
探究GP系統運作,現將個人對GP系統中的各種Shell的理解解析如下,供參考!
所有說明都依 Topprod GP Server 正式區為例
rebulid:重新部署Tiptop GP系統所有各個模組---------------------------------------------------------------
此Shell有點複雜,看著別暈喲,主要是中途會有處理很多文件
A、rebuild路徑
/u1/topprod/tiptop/ds4gl2/bin
B、rebuild Shell解析
####### Rebuild TIPTOP package# Modify.........: 08/11/14 FUN-8B0061 alexstar Compile TIPTOP relational tools# Modify.........: 09/03/23 FUN-930135 alex add p_dbbackup# Modify.........: 09/03/26 FUN-930157 alex adjust cp after rm process# Modify.........: 09/04/03 FUN-940015 ELLE adjust link# Modify.........: 09/03/26 FUN-940130 alex adjust link######umask 000 #umask先將該rebuild shell腳本執行過程創建的文件默認權限設為777# trap ' ' 2 #雖然該行注釋不執行,還是解釋一下:trap表示忽略信令。trap 2表示該rebuild shell執行過程中忽略2號信令Ctrl+\CURRDIR=`pwd` #pwd命令取當前路徑值賦給局部變數CURRDIR,之後有些操作不在當前路勁下以便跳回來#--- Compile TIPTOP Source File (4gl - > 42m) ------------------------------#compile函數主要將GP標準模組下的4GL程式編譯成42mcompile() #定義函數compile{for d in $systems #迴圈gener_sys函數取得的GP標準模組名字$systemsdoecho '====== ('$d') ======'cd $TOPDIR/$d/4gl\rm -f ../42m/*.42m\rm -f rebuild.rcms_codeset=`locale charmap | cut -d. -f1 | cut -d\" -f2 `#取當前GP Server上的字符編碼case ${ms_codeset} inBIG5|big5) lang='big5';;GB2312|GBK|GB18030|gb18030) lang='gb';;UTF-8|utf-8|utf8) lang='utf8';;esac#一下case處理:如果for迴圈處理的模組名為lib或qry或azz則將$DS4GL/bin/對應語言別下的固定42m檔mv到相應的GP模組下的42m路徑中case $d inlib) cp -rf $DS4GL/bin/$lang/lib_cl_cmdrun.42m $LIB/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/lib_cl_contview.42m $LIB/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/lib_cl_err3.42m $LIB/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/lib_cl_hashkey.42m $LIB/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/lib_cl_qbe.42m $LIB/42m/. 2>/dev/null;;qry) cp -rf $DS4GL/bin/$lang/qry_q_contview.42m $QRY/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/qry_q_contview2.42m $QRY/42m/. 2>/dev/null;;azz) cp -rf $DS4GL/bin/$lang/azz_p_go.42m $AZZ/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/azz_p_callback.42m $AZZ/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/azz_p_dbbackup.42m $AZZ/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/azz_p_lang_s.42m $AZZ/42m/. 2>/dev/nullcp -rf $DS4GL/bin/$lang/azz_p_keycert.42m $AZZ/42m/. 2>/dev/null;;esac#一下處理請參閱complie_c函數中的注解,完全一樣的處理過程touch rebuild.rcfgl=`ls | grep '\.4gl$' | sed -e 's/\.4gl//'`for i in $fgldo$RC $i >x1 2>x2 if [ $? -ne 0 ] ; thenhead -n 1 x1cat x2echo "${i}.4gl" >> rebuild.rcelsehead -n 1 x1ficat x1 x2 >>x3cat x2 >>x4done\rm -f x1 x2export TEMPDIR=$TOP/tmp #Add by alexstar#====== ERROR LIST ======echo '====== ('$d') [4gl]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [4gl]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [4gl]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rc | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rc >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.all #將x3中記錄的所有操作日誌都追加到$TEMPDIR/rebuild.all文件中cat x4 >> $TEMPDIR/rebuild.err#將x4中記錄的失敗操作日誌都追加到$TEMPDIR/rebuild.err文件中#因此如果有重新編譯GP模組如鼎新幫我們做版本更新則可以從上述文件中看到編譯文件的操作日誌echo ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rc\rm -f x3 x4 #日誌已經記錄到歸總文件裏面,所以此處的x3與x4也可以一併同時刪除了done}#--- Compile TOPCUST Source File (4gl - > 42m) ------------------------------#compile_c函數主要將GP客制模組下的4GL程式編譯成42mcompile_c(){for d in $systems_c #迴圈cust_sys函數中得到的客制模組$systems_cdoecho '====== ('$d') ======' #顯示當前在處理的是哪個客制模組cd $CUSTDIR/$d/4gl #跳到該客制模組的4gl路勁下\rm -f ../42m/*.42m #先刪除該客制模組下42m路徑下的所有42m檔\rm -f rebuild.rc #同樣先刪除4gl路勁下的rebuild.rc文件touch rebuild.rc #再重新新建一個rebuild.rc文件fgl=`ls | grep '\.4gl$' | sed -e 's/\.4gl//'`#將4gl路勁下的所有4gl程式去掉後綴名將值賦給fgl即fgl=axmp411 axmp865 axmt620這樣的形式#sed命令選項說明 -e:允許多項編輯,s:替代.上面的sed命令表示將grep的結果每一項都去掉末尾的.4gl字符for i in $fgldo$RC $i >x1 2>x2 #r.c2編譯該4gl文檔,結果重定向x1文件,如果錯誤則錯誤重定向x2文件if [ $? -ne 0 ] ; then #如果執行r.c2執行狀態不成功head -n 1 x1cat x2 #終端打印x2文件中的錯誤信息echo "${i}.4gl" >> rebuild.rc #并將編譯出錯的4gl文件名追加重定向至rebuild.rc文件中elsehead -n 1 x1 #如果r.c2成功,則取x1文件中的第1行內容ficat x1 x2 >>x3 #不管r.c2成功與失敗都將x1與x2這些記錄日誌重定向追加到x3文件中cat x2 >>x4 #同時將x2中的錯誤信息追加到x4文件中done\rm -f x1 x2 #做完這些將x1與x2文件都刪除掉#====== ERROR LIST ======echo '====== ('$d') [4gl]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [4gl]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [4gl]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rc | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rc >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.all#將x3中記錄的所有操作日誌都追加到$TEMPDIR/rebuild.all文件中cat x4 >> $TEMPDIR/rebuild.err#將x4中記錄的失敗操作日誌都追加到$TEMPDIR/rebuild.err文件中#因此如果有重新編譯GP模組如鼎新幫我們做版本更新則可以從上述文件中看到編譯文件的操作日誌#[1]、參閱後面[1]:ERROR LIST 文件說明echo ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rc\rm -f x3 x4 #日誌已經記錄到歸總文件裏面,所以此處的x3與x4也可以一併同時刪除了done}#----- Linking TIPTOP Application (42m -> 42r) -----------------------------#link函數主要將GP標準模組下的42m鏈結成42rlink(){if [ "$rgx" = "all" ] ; thenecho '====== (r.l2) ======'r.l2 libr.l2 subr.l2 qryr.l2 p_dbbackup #FUN-940130r.l2 p_go #add by alexlinr.l2 p_keycert #FUN-940130fifor d in $systemsdoecho '====== ('$d') ======'#FUN-940015if [ "$d" = "lib" -o "$d" = "sub" -o "$d" = "qry" ] ; thenr.l2 $d 1>/dev/null 2>>rebuild.rlelse# if [ -d $TOPDIR/$d/4gl ] ; thencd $TOPDIR/$d/4gl ln=`ls *.4gl | cut -d . -f1`\rm -f rebuild.rltouch rebuild.rlfor i in $lndo$RL $i >x1 2>x2 if [ -s x2 ] ; thenhead -n 2 x1cat x2echo "${i}.42r wasn't be produced." >> rebuild.rlelsehead -n 2 x1ficat x1 x2 >>x3cat x2 >>x4doneif [ $d -eq "azz" ];then #add by alexlinr.l2 p_dbbackup #FUN-940130r.l2 p_go #add by alexlinr.l2 p_keycert #FUN-940130fi\rm -f x1 x2#====== ERROR LIST ======echo '====== ('$d') [link]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [link]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [link]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rl | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rl >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.allcat x4 >> $TEMPDIR/rebuild.errecho ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rl\rm -f x3 x4fidone}#----- Linking TIPTOP Application (42m -> 42r) -----------------------------#link_c函數主要將GP客制模組下的42m鏈結成42rlink_c(){if [ "$rgx" = "all" ] ; thenecho '====== (r.l2) ======'r.l2 libr.l2 subr.l2 qryr.l2 p_dbbackup #FUN-940130r.l2 p_go #add by alexlinr.l2 p_keycert #FUN-940130fifor d in $systems_cdoecho '====== ('$d') ======'if [ -d $CUSTDIR/$d/4gl ] ; thencd $CUSTDIR/$d/4gl ln=`ls *.4gl | cut -d . -f1`\rm -f rebuild.rltouch rebuild.rlfor i in $lndo$RL $i >x1 2>x2 if [ -s x2 ] ; thenhead -n 2 x1cat x2echo "${i}.42r wasn't be produced." >> rebuild.rlelsehead -n 2 x1ficat x1 x2 >>x3cat x2 >>x4doneif [ $d -eq "azz" ];then #add by alexlinr.l2 p_dbbackup #FUN-940130r.l2 p_go #add by alexlinr.l2 p_keycert #FUN-940130fi\rm -f x1 x2#====== ERROR LIST ======echo '====== ('$d') [link]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [link]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [link]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rl | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rl >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.allcat x4 >> $TEMPDIR/rebuild.errecho ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rl\rm -f x3 x4fidone}#--- Compile TIPTOP Form File (per -> 42f) ---------------------------------#form函數主要將GP標準模組下的per編譯成42f form(){for d in $systemsdoecho '====== ('$d') ======'cd $TOPDIRfind . -name grep -exec \rm -rf {} \; cd $TOPDIR/$d/per\rm -f ../42f/*.42f\rm -f rebuild.rftouch rebuild.rfper=`ls | grep '\.per$' | sed -e 's/\.per//'`for i in $perdo$RF $i >x1 2>x2 if [ $? -ne 0 ] ; thenhead -n 1 x1cat x2echo "${i}.per" >> rebuild.rfelsehead -n 1 x1ficat x1 x2 >>x3 cat x2 >>x4done\rm -f x1 x2#====== ERROR LIST ======echo '====== ('$d') [per]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [per]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [per]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rf | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rf >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.allcat x4 >> $TEMPDIR/rebuild.errecho ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rf\rm -f x3 x4 done}#form_4fd函數主要將GP標準模組下的4fd編譯成42fform_4fd(){for d in $systemsdoecho '====== ('$d') ======'cd $TOPDIRfind . -name grep -exec \rm -rf {} \; cd $TOPDIR/$d/4fd\rm -f ../42f/*.42f\rm -f rebuild.rftouch rebuild.rf#ffd =`ls | grep '\.4fd$' | sed -e 's/\.4fd//'`for i in `ls | grep '\.4fd$' | sed -e 's/\.4fd//'`do$RF $i >x1 2>x2 if [ -s x2 ] ; thenhead -n 1 x1cat x2echo "${i}.4fd" >> rebuild.rfelsehead -n 1 x1fi#cat x2cat x1 x2 >>x3cat x2 >>x4if [ -s x2 ] ; then\rm x1 x2fidone\rm -f x1 x2#====== ERROR LIST ======echo '====== ('$d') [4fd]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [4fd]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [4fd]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rf | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rf >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.allcat x4 >> $TEMPDIR/rebuild.errecho ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rf\rm -f x3 x4 done}#--- Compile TIPTOP Form File (per -> 42f) ---------------------------------#form_c函數主要將GP客制模組下的per鏈結成42fform_c(){for d in $systems_cdoecho '====== ('$d') ======'cd $CUSTDIRfind . -name grep -exec \rm -rf {} \; cd $CUSTDIR/$d/per\rm -f ../42f/*.42f\rm -f rebuild.rftouch rebuild.rfper=`ls | grep '\.per$' | sed -e 's/\.per//'`for i in $perdo$RF $i >x1 2>x2if [ $? -ne 0 ] ; thenhead -n 1 x1cat x2echo "${i}.per" >> rebuild.rfelsehead -n 1 x1ficat x1 x2 >>x3cat x2 >>x4done\rm -f x1 x2#====== ERROR LIST ======echo '====== ('$d') [per]====== ('`date`')' >> $TEMPDIR/rebuild.${acttime}.outecho '====== ('$d') [per]====== ('`date`')' >> $TEMPDIR/rebuild.allecho '====== ('$d') [per]====== ('`date`')' >> $TEMPDIR/rebuild.errecho 'Error List : ('`cat rebuild.rf | wc -l`')' >> $TEMPDIR/rebuild.${acttime}.outcat rebuild.rf >> $TEMPDIR/rebuild.${acttime}.outcat x3 >> $TEMPDIR/rebuild.allcat x4 >> $TEMPDIR/rebuild.errecho ' ' >> $TEMPDIR/rebuild.${acttime}.out\rm -f rebuild.rf\rm -f x3 x4done}#--- Determine TIPTOP Systems ----------------------------------------------#gener_sys函數主要取得GP中的標準模組名字gener_sys(){if [ "$systems" = "all" ] ; thencd $TOPDIR #跳到用戶輸入的GP標準模組目錄下# systems=`ls -ld a?? g?? |grep '^d' |awk '{print $9}'` #ls -d a?? c?? g??` # No:TQC-810085systems=`ls -ld a?? g?? c?? c??? |grep '^d' |awk '{print $9}'` #ls -d a?? c?? g??`#上一句Shell如下分解說明:#ls -ld a?? g?? c?? c??? 表示ls -l:表示列出詳細信息,等同與命令ll, -d:表示如果結果是一個目錄,只列出目錄的名稱不列裏面的內容。結果如下形式#drwxrwxrwx 11 tiptop tiptop 1024 Oct 20 2010 aap#|grep '^d'表示將ls的結果作為grep的輸入塞選出行首字符是d的行,即塞選的結果是只留下是目錄的結果行#|awk '{print $9}'表示將grep塞選的結果再重定向給awk命令,awk只塞選出第9個字段即模組名字字段aapsystems='lib sub qry '$systems #將lib sub qry三個模組與之前得到的$systems值合併就得到了GP所有的模組名字cd $CURRDIRfi}#--- Determine TOPCUST Systems ----------------------------------------------#cust_sys函數主要取得GP中的客制模組名字cust_sys(){#if [ "$systems" = "all" ] ; then # No:TQC-810085if [ "$systems_c" = "all" ] ; thencd $CUSTDIR #跳到用戶輸入的客制目錄下systems_c=`ls -d c??? c??` #列出所有GP客制模組的路徑名字將值賦給systems_c.一個?匹配一個字符.因為GP客制模組有的是3個字符有的是4個字符#systems_c = cap cbg cbm cbx cco ccs cdm cec cem cfa cgap cgfa cggl cgis cgl cgnm cgpm cgpy cgxc cgxr cic cim clib 等cd $CURRDIR #得到所有GP客制模組的路徑名字后再跳回到當前執行rebuild腳本的所在路徑fi}#--- Main Section ---------------------------------------------------#rebuild腳本實際從這行開始做事echo "\n\t\033[7m Rebuild TIPTOP Package \033[m\033[5m Ver 1.0\033[m"echo " -------------------------------------------\n"#提示上2行的信息于終端上if [[ $# -eq 1 && $1 -eq c ]];then#如果rebuild Shell的位置參數總數只有1個且位置參數$1=c# Modify by No:TQC-810035 start ##輸入路徑信息echo "\tEnter TIPTOP Directory : \c"; read TOPDIR #等待用戶輸入正式區TIPTOP的路徑echo "\tEnter TOPCUST Directory : \c"; read CUSTDIR#等待用戶輸入客制區TOPCUST的路勁#選擇操作echo " -------------------------------------------"echo " (c) Compile Source Program (4gl -> 42m)" #c選項->編譯4gl檔成42m檔echo " (l) Link Compiled Programs (42m -> 42r)" #l選項->鏈結42m檔成42r檔echo " (f) Compile Form File (per -> 42f)\n" #f選項->編譯per檔成42f檔echo " -------------------------------------------"#提示信息與用戶交流供用戶選擇#echo "\tEnter Your Choice : \c"; read ansecho "\tEnter Your Choice(c or l or f or clf) : \c"; read ans#提示用戶輸入選擇c或l或f或clf都選,并將選擇值賦給變數ans#選擇要操作的GP模組echo " -------------------------------------------"echo " Using lowercase letters .ex aoo aim.. etc."#可選擇單一模組,且用戶輸入模組名時要小寫echo " Typing the word 'all' means all modules.\n"#可選擇操作所有的模組,用戶需要輸入 allecho " -------------------------------------------"echo "\tEnter TIPTOP Systems(all) : \c"; read systems#用戶輸入的GP模組名稱值存入systems變數echo "\tSelect 0)Exit 1)4J's Genero : \c"; read choice#用戶是否決定操作的選擇入choice變數# Modify by No:TQC-810035 end ##一下處理:編譯/u1/topprod/tiptop/ds4gl2/bin與/u1/topprod/tiptop/ora/bin路勁下的一些工具類的4gl與per文檔case $choice in #如果用戶選擇1,即要rebuild1) RC=r.c2 #搞3個變數賦予相應的操作RL=r.l2RF=r.f2#FUN-8B0061 ---start---echo "Compiling tools..."rebuild_tool > /dev/null 2>&1 #調用rebuild腳本同路徑下的rebuild_tool腳本,將執行結果輸入到位桶/dev/null。如有錯誤,則錯誤輸入到標準輸出即終端上#[2]、參閱後面[2]:rebuild_tool Shell解析說明rebuild_patchtool > /dev/null 2>&1 echo "Tools compiled successfully..." #提示用戶所有的工具類都成功編譯完畢#FUN-8B0061 ---end---;;0|*) exit #如果用戶選擇0或是其它錯誤選擇則退出rebuild;;esacacttime=`date +%m%d%H%M` #取當前日期的月日時分值賦給acttime變數。等下要用該變數組出文件名做操作日誌用#acttime=10261407表示10月26日14點07分if [ -s $TEMPDIR/rebuild.all ] ; then#刪除2個臨時文件$TEMPDIR/rebuild.all與$TEMPDIR/rebuild.err\rm -f $TEMPDIR/rebuild.allfiif [ -s $TEMPDIR/rebuild.err ] ; then\rm -f $TEMPDIR/rebuild.errfiflag=0if [ "$systems" = "" ] ; then #如果用戶沒有選擇模組名,則默認rebuild所有的模組systems=allfi if [ "$systems" = "all" ] ; thenrgx='all'fianswer=`echo $ans|cut -c1-1`' '`echo $ans|cut -c2-2`' '`echo $ans|cut -c3-3`#取$ans值即用戶選擇的操作依空格分開賦值給answerfor i in $answerdoif [ $i = "c" -o $i = "l" -o $i = "f" ] ; then#如果用戶選擇的操作是c或l或f,則執行case語句flag=1case $i inc) cust_sys #選擇c則調用4個函數cust_sys compile_c gener_sys compilecompile_cgener_syscompile;;l) cust_sys #選擇l則調用4個函數cust_sys link_c gener_sys linklink_cgener_syslink;;f) cust_sys #選擇f則調用4個函數cust_sys form_c gener_sys formform_cgener_sysform;;esacelse #如果用戶選擇的操作不是c或l或f,則提示非法操作選項 echo "Illegal option: $i" fidoneif [ $flag -eq 1 ] ; then #如果變數flag=1即用戶有選擇c或l或f操作,則echo ""pg $TEMPDIR/rebuild.${acttime}.out #分頁顯示上述操作執行的結果fiecho "\033[41;5m Use rebuild_chk to check 4gl/42m and per/42f!!!\033[0m"#. $TOP/ora/bin/rebuild_chk # TQC-810035. $TOP/ds4gl2/bin/rebuild_chk # TQC-810035#rebuild完後調用$TOP/ds4gl2/bin/rebuild_chk腳本做檢查else #if語句配對的else,即如果rebuild Shell的位置參數總數不是(只有1個且位置參數$1=c)時#一下else處理的流程與上面if中的流程一模一樣,下麵只注釋與if塊中有差異的地方# Modify by No:TQC-810035 start #echo "\tEnter TIPTOP Directory : \c"; read TOPDIR#只需要讀入TIPTOP正式區的路勁echo " ------------------------------------------"echo " (c) Compile Source Program (4gl -> 42m)"echo " (l) Link Compiled Programs (42m -> 42r)"echo " (f) Compile Form File (per -> 42f)\n"echo " ------------------------------------------"#echo "\tEnter Your Choice : \c"; read ansecho "\tEnter Your Choice(c or l or f or clf) : \c"; read ansecho " ------------------------------------------"echo " Using lowercase letters .ex aoo aim.. etc."echo " Typing the word 'all' means all modules.\n"echo " ------------------------------------------"echo "\tEnter TIPTOP Systems(all) : \c"; read systemsecho "\tSelect 0)Exit 1)4J's Genero : \c"; read choiceecho ""# Modify by No:TQC-810035 end #case $choice in1) RC=r.c2RL=r.l2RF=r.f2#FUN-8B0061 ---start---echo "Compiling tools..."rebuild_tool > /dev/null 2>&1 rebuild_patchtool > /dev/null 2>&1 echo "Tools compiled successfully..."#FUN-8B0061 ---end---;;0|*) exit;;esacacttime=`date +%m%d%H%M`if [ -s $TEMPDIR/rebuild.all ] ; then\rm -f $TEMPDIR/rebuild.allfiif [ -s $TEMPDIR/rebuild.err ] ; then\rm -f $TEMPDIR/rebuild.errfiflag=0if [ "$systems" = "" ] ; thensystems=allfi if [ "$systems" = "all" ] ; thenrgx='all'fianswer=`echo $ans|cut -c1-1`' '`echo $ans|cut -c2-2`' '`echo $ans|cut -c3-3`for i in $answerdoif [ $i = "c" -o $i = "l" -o $i = "f" ] ; thenflag=1 #此處與if塊中的處理調用的函數少了2個cust_sys compile_c,因為不做客制區case $i inc) gener_sys compile;;l) gener_sys #此處與if塊中的處理調用的函數少了2個cust_sys link_c,因為不做客制區link;;f) gener_sys #此處與if塊中的處理不一樣type gsform|grep 'not' >>/dev/nullif [[ $? -ne 0 ]] ; then #如果找不到gsform類型,即沒有gsform程式,則調用from_4fd函式form_4fdelse #否則調用form函式formfi;;esacelseecho "Illegal option: $i" fidoneif [ $flag -eq 1 ] ; thenecho ""pg $TEMPDIR/rebuild.${acttime}.outfiecho "\033[41;5m Use rebuild_chk to check 4gl/42m and per/42f!!!\033[0m"#. $TOP/ora/bin/rebuild_chk # TQC-810035. $TOP/ds4gl2/bin/rebuild_chk # TQC-810035fi [1]:ERROR LIST 文件說明:
[2]:rebuild_tool Shell解析說明
#!/bin/ksh#Modify: 2008/03/10 FUN-830036 By alexstar#Modify: 2008/11/14 FUN-8B0058 By alexstar compile all patchtoolsfun_refresh_tools() #FUN-8B0058 #定義fun_refrech_tools函數{echo "$1"|grep -q '\.4gl$' #echo顯示傳進來的file文件名grep選出依.4gl結尾的文件 if [ "$?" -eq 0 ] ;then #如果grep退出的狀態是0表示成功fglcomp $1 #則編譯4gl文檔fglcomp $1if [ "$?" -eq 0 ]; then #如果編譯成功fgl2p -o `basename $1 .4gl`.42r `basename $1 .4gl`.42melse #則fgl2p鏈接42m檔成相同文件名.42r檔echo error : $file compile failed!fi else #否則表示是per檔fglform $1 #則fglform編譯per檔fi}echo "Tool Rebuild start,please wait..." #FUN-830033 #顯示信息echo ""FGLDIR=`echo $FGLDIR|cut -d . -f1`.dev;export FGLDIR #FUN-8B0058#將/u1/genero.dev值賦給變數FGLDIRcd $TOP/ds4gl2/bin #跳轉路徑至$TOP/ds4gl2/bin下echo In `pwd` ... #FUN-830033#一下FOR迴圈找4gl與per文檔,且該文檔名最後一個字母不是Tfor file in *[!T].4gl *[!T].per #FUN-830033 #FUN-8B0058doif [ "$file" = "r.f2.per" ]; then #如果file是r.f2.per則跳過,因為這個文件是shell腳本不是per文檔continuefifun_refresh_tools $file #FUN-8B0058 #調用函數fun_refresh_tools函數編譯$file文件doneif [ -e "$TOP/ora" ]; then #FUN-830033#如果存在$TOP/ora路勁cd $TOP/ora/4gl #則跳轉到$TOP/ora/4gl路勁下echo In `pwd` ... for file in *[!T].4gl #同上編譯該路徑下的4gl工具類4gl程式dofun_refresh_tools $file #FUN-8B0058mv "`basename $file .4gl`.42m" ../42m/#將編譯ok的42m檔 mv到$TOP/ora/42m路徑下mv "`basename $file .4gl`.42r" ../42m/#將鏈結ok的42r檔也mv到$TOP/ora/42m路徑下donefi#cd $TOP/bin/C #FUN-830033 mark #echo "[ $TOP/bin/C ]:"#for file in dtcput.c dtcget.c readstr.c#do# echo $file# cc -o `basename $file .c` $file# cp `basename $file .c` ../#doneecho ""echo "Tool Rebuild complete!" #FUN-830033 -------------------- over,rebuild重新部署tiptopGP系統各模組Shell指令完畢!
與Tiptop GP與系統部署有關的Shell rebuild解析就介紹到這裡!
r.f2 r.gf r.c2 r.l2 exe2 r.r2 r.d2+ udm7 loadx unloadx createdb rebuild
至此,關於Tiptop GP 系統客制開發有關的HP-UNIX Linux就全部介紹完了
希望對朋友們有所幫助,歡迎交流指正!
轉載請注明CSDN李藝輝博客專欄http://blog.csdn.net/yihuiworld |
|