任务驱动,有目标性的去研究,学习

来源:互联网 发布:xampp 数据库配置 编辑:程序博客网 时间:2024/05/02 04:44

任务驱动,有目标性的去研究,学习

    最近两周都在搞一个工具的调研,其实这个工具系统已经运行了蛮长时间,一直处于维护和新需求添加阶段,因此也经常出现一些bug问题。主要考虑到性能方面的问题,于是我们就试着换一种方式去实现,看是否可行。ESB,多系统平台之间的集成,想用来练练手,自己只是稍微了解了解了点,后来就被指派去研究:假设用shell脚本去执行我们目前系统的大部分功能,再用java去调用shell脚本,调用完成后再进行一些善后处理工作等。

 

    Linux知识,其实自己很去年就接触了,也就是只能进行简单的一些操作。这次主要是为了解决实际的问题而重新拾起Linux平台。照着原先学习的比较,很快就再本机搭建去了一个虚拟的Linux平台,利用SecureCRT软件使XPLinux进行交互。由于目的性强,只有通过组合命令才能解决这复杂问题,首当其冲的就是学习shell脚本。脚本的编写规范,格式等。由于自己以前也没写过shell脚本,自己就把复杂的任务尽量简单化,步步分解,只有当前面的功能实现了,才进行继续编写,遇到不懂的,再找资料,测试,编写小实现运行。其中有几个地方比较印象深刻:有个同事是进行Linux平台的项目上线,熟悉一些Linux命令,自己遇到几个问题,想不出来,就去向他讨教,几个比较关键的地方在他的指引下一一被我解决啦。


 

以下是自己写的shell代码,但是没有将里面的部分逻辑进行函数提炼(自己会优化处理和功能的完善)。

 

#!/bin/ksh

## 数据库导出文件部分省略

................

orgin_file_name='dim_location_simple.csv'

dim_location_dic_name="dim_location_dic.csv"

#area_code=$1   

area_code=1-4-  

#area_code_index=$2

area_code_index=2

 

first_line=`head -n 1 $orgin_file_name`

#echo $first_line

 

#统计导出文件中每一行记录的列数

file_field_num=`awk '{FS=","} END {print NF}' ${orgin_file_name}`

#echo ${file_field_num}

 

#统计area_code下属地数量

area_code_count=`awk 'BEGIN {FS=","} ($1~/'${area_code}'/) {print NF}' ${dim_location_dic_name}`

#echo ${area_code_count}

 

index=1

while [ ${index} -le ${area_code_count} ]

do

 

    #当前属地编码

    current_area_code=`awk 'BEGIN {FS=","} ($1~/'${area_code}'/) {print $'${index}'}' ${dim_location_dic_name}`

    index=$((${index}+1))


#导出的属地清单文件名称

output_file_name="dim_location_${current_area_code}.csv"

output_zip_file_name="dim_location_${current_area_code}.zip"

#echo ${output_file_name}

#写入字段标题

head -n 1 $orgin_file_name | awk 'BEGIN {FS=","} { i=1; for (i =1; i<NF; i++) {if(i != '${area_code_index}') printf $i"," } print $'${file_field_num}' }' > ${output_file_name}

#导出属地化清单文件(去除AREA_CODE)

awk '{FS=","} ( $'${area_code_index}'~"'${current_area_code}'" ) { i=1; for (i =1; i<NF; i++) {if(i != '${area_code_index}') printf $i"," } print $'${file_field_num}' }' ${orgin_file_name} >> ${output_file_name}

    

#测试文件是否为只有文件头,若是则删除

file_line_num=`wc -l ${output_file_name} | awk '{print $1}'`

##测试用,测试文件的行数

#file_line_num=`wc -l ${output_file_name}`

#echo ${file_line_num}

###


(test ${file_line_num} -le 1) && rm ${output_file_name}


##压缩属地化清单文件为zip格式,删除相应的CSV文件

if [ -e ${output_file_name} ]; then

   zip ${output_zip_file_name} ${output_file_name}

   #rm -f ${output_file_name}

fi

Done


 

其实,我写这篇文章也是为了记录自己的一些思想观念的转变。任务再复杂,再困难,我们可以进行一步步分解,有目的性去查找资料,寻求帮助,结合自己的大胆的想法和不断的尝试,最终的结果可想而知啦。任务驱动学习,带着问题去学习,不盲目,不盲从,静心思考,不断尝试,追求完美。

原创粉丝点击