📄 mkunit
字号:
#!/bin/ksh# 功能: 得到指定任务输出明细行的统计单位串# 用法: getUnitStr 任务号如 CM_CFG_0007# 返回 0 -- 获取成功 其他 -- 失败# 输出 unitStrfunction getUnitStr{ # 必须输入参数, 任务号如 CM_CFG_0007 if [[ $# != 1 ]] then echo "调用函数 getTaskFmt 时没有输入任务号,如CM_CFG_0007" return 1 fi taskSqno=$1 FMTPATH=$HOME/hpux/fmt fmtfile=${FMTPATH}/O_${taskSqno}.fmt unitStr= # 如果文件不存在,则退出 if [[ ! -s $fmtfile ]] then echo "输入文件格式定义文件 $fmtfile 不存在或无内容" return 2 fi # label 0 -- 输入格式文件中无字典项 1 -- 输入格式文件中有字典项 label=0 # 从输入文件格式定义文件中得到数据字典项 while read -r f1 f2 rest do word= # 如果字段长度为 0 ,则不处理 if [[ ${#f1} = 0 ]] then continue fi # 不处理注释行 if [[ `expr "$f1" : '\(.\).*$'` = "#" ]] then continue fi # 字典项的必须为 [a-zA-Z0-9_.] 格式 ,大小写字母,0-9数字,下划线, . if [[ `expr "$f1" : '[a-zA-Z0-9_.]*'` = ${#f1} ]] then label=1 if [[ $f1 = mesg || $f1 = mesgId ]] then continue fi word=$f1 # 字典项的必须为 [a-zA-Z0-9_.] 格式 ,大小写字母,0-9数字,下划线, . elif [[ `expr "$f2" : '[a-zA-Z0-9_.]*'` = ${#f2} ]] then label=1 if [[ $f2 = mesg || $f2 = mesgId ]] then continue fi word=$f2 fi # 调用 seek 命令,得到输出文件中字段的统计单位 $HOME/hpux/etc/seek $word | head -1 | read -r localName word type size unit rest # 判断是否单词在数据字典中,如果不在,则报告错误 # 报告错误 与 "$word" 完全匹配的字段不在数据字典中 if [[ `expr "X${type}" : '.*数据字典.*$'` > 0 ]] then echo "$localName $word ${type}" return 3 else echo $type | tr "[[:upper:]]" "[[:lower:]]" | read -r wordType case $wordType in char|dec) if [[ ${#unit} = 0 ]] then unit=NA fi ;; int) unit=$size if [[ ${#unit} = 0 ]] then unit=NA fi ;; *) echo "$localName $word 的字段类型 $type 非法 " continue ;; esac unitStr="${unitStr}${unit}|" fi done < $fmtfile # 如果输入格式文件中有字典项,则 if [[ $label = 1 ]] then return 0 else echo "输入文件格式定义文件 $fmtfile 无任何字典项,需检查该文件" return 4 fi return 0}while read -r taskId name restdo # 如果字段长度为 0 ,则不处理 if [[ ${#taskId} = 0 ]] then continue fi # 不处理注释行 if [[ `expr "$taskId" : '\(.\).*$'` = "#" ]] then continue fi echo getUnitStr $taskId unitStr= getUnitStr $taskId if [[ $? != 0 ]] then echo "取任务 $taskId 的输出文件统计单位串失败" else unitStr="${unitStr}||||||||||" echo "统计单位串为 $unitStr" fidone < $HOME/hpux/config/task.cfg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -