日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell-实际业务操作02

發(fā)布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell-实际业务操作02 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄


#!/bin/sh ############################## ## 名稱: MvCdr4Classify.sh ## 描述: 將/ocs/data/output/251/normal/bak目錄下的全部話單按照類別存儲到對應(yīng)的目錄下(VOICE\DATA\SMS) ## 規(guī)則 001 Data 002 Voice 004 SMS ## 每種話單的目錄下,有normal和gz_file兩個目錄 ,normal目錄存放處理之后的話單,gz目錄存放處理之后壓縮的話單 ## 參數(shù): 暫無 ## 作者: 小工匠 ## 日期: 2017-06-17 ## 版本:V1.0 ## 備注:使用時注意修改SOURCE_MENU的值,測試用,取的是bak目錄 ###############################定義退出標(biāo)識符, 腳本執(zhí)行后,通過echo $? 查看退出標(biāo)識符,即上個命令或者腳本的返回結(jié)果 EXIT_FAILURE=1 #Failing exit status EXIT_SUCCESS=0 #Successful exit status #開始時間 BEGIN_TIME=`date +%s`#當(dāng)前執(zhí)行腳本的全路徑 SCRIPT_PATH=$(cd `dirname $0`; pwd) SCRIPT_NAME=`basename $0` #日志路徑 LOG_LOCATION=/ocs/tools/OperCDR/logs#存放話單目標(biāo)目錄 #mkdir -p new_folder/{folder_1,folder_2..} 將目錄作為參數(shù)傳入對應(yīng)的函數(shù) 這種快捷的方式,不能有效的判斷目錄是否存在,暫時采用逐條創(chuàng)建的方式 VOICE_NORMAL=/bakcdr/cdrbak/VOICE/normal VOICE_GZ_FILE=/bakcdr/cdrbak/VOICE/gz_fileDATA_NORMAL=/bakcdr/cdrbak/DATA/normal DATA_GZ_FILE=/bakcdr/cdrbak/DATA/gz_fileSMS_NORMAL=/bakcdr/cdrbak/SMS/normal SMS_GZ_FILE=/bakcdr/cdrbak/SMS/gz_file#目標(biāo)話單路徑 TargetVoicePath=/bakcdr/cdrbak/VOICE TargetDataPath=/bakcdr/cdrbak/DATA TargetSmsPath=/bakcdr/cdrbak/SMS#判斷話單存放目錄是否存在,存在則進入$1所在的目錄,不存在不創(chuàng)建目錄,直接退出 Check_SourceMenu(){if [ ! -d $1 ];thenecho -e "Target Menu \033[31m$1 does not exist \033[0m,existing the script \033[31m$SCRIPT_PATH/$SCRIPT_NAME\033[0m ,check fisrt please" >>$LOG_LOCATION/MvCdr4Classify.log 2>&1exit $EXIT_FAILUREelsecd $1echo Current Directory $1 fi }#判斷存放話單的目標(biāo)目錄是否存,不存在則創(chuàng)建目錄 Check_TargetMenu(){if [ ! -d $1 ] ; then mkdir -p $1echo $1 does not exists , create successfully >>$LOG_LOCATION/MvCdr4Classify.log 2>&1fi }#處理話單文件 DealCDRFile(){#轉(zhuǎn)移到Target對應(yīng)目錄下#mv $1 $2#echo "$1 moved to $2 successfully " >>$LOG_LOCATION/MvCdr4Classify.log 2>&1#提取$1的日期,創(chuàng)建目錄CDR_DATE=`echo $1 | awk 'BEGIN{FS="_"}{print substr($5,1,8)}'`echo $CDR_DATEFinalPath=$2/normal/$CDR_DATEif [ ! -d $FinalPath ] ; then mkdir -p $FinalPathelse#將話單轉(zhuǎn)移到改目錄下mv $1 $FinalPathecho "$1 moved to $FinalPath successfully " >>$LOG_LOCATION/MvCdr4Classify.log 2>&1fi }#檢查話單存放目錄是否存在 不存在則創(chuàng)建 Check_TargetMenu $VOICE_NORMAL Check_TargetMenu $VOICE_GZ_FILE Check_TargetMenu $DATA_NORMAL Check_TargetMenu $DATA_GZ_FILE Check_TargetMenu $SMS_NORMAL Check_TargetMenu $SMS_GZ_FILE#取話單的原始目錄 暫不考慮通過外部參數(shù)傳入 SOURCE_MENU='/ocs/data/output_bak0617/251/normal/bak'#檢查話單來源目錄是否存在,不存在不創(chuàng)建目錄,直接退出當(dāng)前執(zhí)行的腳本,存在則進入對應(yīng)的目錄 Check_SourceMenu $SOURCE_MENUecho "==========================begin `date "+%Y-%m-%d %H:%M:%S"`===============================================" >>$LOG_LOCATION/MvCdr4Classify.log 2>&1#在原始話單路徑下 提取話單 Check_SourceMenu已經(jīng)校驗并且進入了話單目錄,無需重復(fù)進入 . 注意:如果ls獲取的文件長度超過系統(tǒng)默認(rèn)的命令緩沖區(qū)最大長度會導(dǎo)致錯誤。不適合目錄下文件特別多的情況 for file in `ls in*.s` do#從話單文件名稱獲取話單標(biāo)識 001 Data 002 Voice 004 SMSCDR_FLAG=`echo $file | awk 'BEGIN{FS="_"}{print $3}'`#分支判斷case $CDR_FLAG in 001) DealCDRFile $file $TargetDataPathecho Deal Data CDR $CDR_FLAG Successfully >>$LOG_LOCATION/MvCdr4Classify.log 2>&1;;002)DealCDRFile $file $TargetVoicePathecho Deal Voice CDR $CDR_FLAG Successfully >>$LOG_LOCATION/MvCdr4Classify.log 2>&1;;004)DealCDRFile $file $TargetSmsPathecho Deal SMS CDR $CDR_FLAG Successfully >>$LOG_LOCATION/MvCdr4Classify.log 2>&1;;*)##匹配不到的文件,紅色輸出到日志, ERROR關(guān)鍵字echo -e "\033[31m ERROR $file CDR_FLAG not in 001 002 004 \033[0m" >>$LOG_LOCATION/MvCdr4Classify.log 2>&1;;esacdone #結(jié)束時間 END_TIME=$(date +%s) echo "==========================end `date "+%Y-%m-%d %H:%M:%S"`=================================================" >>$LOG_LOCATION/MvCdr4Classify.log 2>&1#計算腳本執(zhí)行時間#也可以 通過下面的方式統(tǒng)計 time 腳本名稱 #....省略執(zhí)行過程 #real 0m2.024s #user 0m0.007s #sys 0m0.008s echo "==========================time consuming $(($END_TIME - $BEGIN_TIME)) seconds=================================================" >>$LOG_LOCATION/MvCdr4Classify.log 2>&1 #輸出一行空行到日志中,方便區(qū)分每次執(zhí)行的日志 echo "" >>$LOG_LOCATION/MvCdr4Classify.log 2>&1exit $EXIT_SUCCESS

總結(jié)

以上是生活随笔為你收集整理的Shell-实际业务操作02的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。