linux shell编程之文件内容写入和日志记录

最近在学习linux的shell编程,由于在初级阶段,所以把平时写的些练习代码记录下来,也和大家共享下,希望和大家day day up,哈哈,这句中国式英语相信读者能明白吧,今天这个代码比前面的2次的稍微长点,功能还是比较简单的,老鸟高手们可以飘过。。。下面是源代码,菜菜们可以和我一起学习看下源代码:
 
#!/bin/bash
#filename:qqgroup.sh
#QQ;384343423
#world77@163.com
#world77.blog.51cto.com
#****************************
#****************************
#this chapter is input QQ member's base information
#QQ_Number  nickname   local
#***************************
echo "please input QQ number:"
read QQ_Number
while [ -z $QQ_Number ] 
do
 echo "you input null,please input you QQ_Number!"
 read QQ_Number 
done
#echo "you input QQ_Number is:" $QQ_Number
echo "please input nickname:"
read nickname
while [ -z $nickname ]
do
 echo "you input null,please input you nickname!"
 read nickname
done
#echo "you input nickname is :"$nickname
echo "please input you local:"
while [ -z $local ]
do
 echo "you input null,please input you local!"
 read local
done
#echo "you input local is:" $local
echo "************************************"
echo "************************************"

echo "you input QQ_Number is :"$QQ_Number
echo "you input nickname  is :"$nickname
echo "you input local     is :"$local
if [ ! -e member.info ]
then
 touch member.info
 echo "----------create member information file success----------" > member.info
 echo $(date +%Y"."%m"."%d" "%k":"%M":"%S) >> member.info 
 echo "this file is record member's information" >> member.info
fi
 echo $QQ_Number":"$nickname":"$local >>member.info

#**************************************************
#this chapter is about build log file to record operation information
log_file=$(date +%Y%m%d)/$(date +%Y%m%d%H%M%S)
if [ ! -d log ]
then
 mkdir log
fi
if [  -d log ]
then 
# mkdir log
 cd log
 if [ ! -d $(date +%Y%m%d) ]
 then
  mkdir $(date +%Y%m%d)
 fi
 touch $log_file
 echo $(date +%Y"."%m"."%d" "%k":"%M":"%S) >> $log_file
 echo "----------create log file success--------------" >> $log_file
 echo "you input QQ_Number,nickname,local into member information is :"$QQ_Number":"$nickname":"$local >> $log_file
fi

代码不是很长,介绍下功能,第一部分是要求你输入你的QQ号码,昵称和所在地,呵呵,然后检查下是否有member.info这个文件,如果没有,着建立这个文件,然后插入几句话
if [ ! -e member.info ]                                           #如果没有member.info这个文件
then
 touch member.info                                             #如果没有则新建文件
 echo "----------create member information file success----------" > member.info
 echo $(date +%Y"."%m"."%d" "%k":"%M":"%S) >> member.info 
 echo "this file is record member's information" >> member.info
fi                                #以上三句是初始化新建文件时候追加的话,记下创建的时间。
 echo $QQ_Number":"$nickname":"$local >>member.info
# 这句是把上面输入的QQ号码,昵称和所在地写入文件member.info.格式如下
123:effect:shanghai
234:world77:pudong
呵呵,具体你运行下代码就知道了,呵呵,下面介绍下代码的第二部分。
呵呵,看看代码的第二部分,个人觉得有点变态了,哈哈。
第二部分代码先检查下是否有LOG这个文件夹,如果没有,则创建下LOG文件夹,接着进入这个目录,新建个目录,是以年月日为名。命令如下:
if [ ! -d log ]                                        #判断是否有log这个目录,没有则创建
then
 mkdir log
fi
if [  -d log ]                                                              #如果有这个目录,进入LOG
then 
# mkdir log
 cd log                                                                  #判断是否有今天的目录(以年月日为名)
 if [ ! -d $(date +%Y%m%d) ]
 then
  mkdir $(date +%Y%m%d)                                   #创建目录,以年月日为名
 fi
 
哈哈,上面的代码还是比较容易的,如果不明白的话,运行下代码就可以明白了,你可以更改下日期,然后你在运行下代码,看下LOG里面是否有变化,你就明白代码的含义了,呵呵,本人的表达能力实在有限,读者千万包涵,哈哈。。。
如果到此为止,也不算变态,变态的还在后面,由于我是想用来做日志的功能,所以在log目录下,以日期新建了目录后,在这个目录下,我会以年月日时分秒的格式为文件名,记录下每次运行这个脚本的操作,即你可以到在这个日志文件里面看到你输入的信息,哈哈。有点变态吧,每次输入都能看到,想看具体效果,运行下代码就知道了,哈哈。。。
 
这个脚本还有很多地方需要改进,比如对输入的判断和长度的限制等,等我有时间了,功力提高了,会后续改进,并继续和大家分享。。。
注:由于本人的基础不是很好,在以root身份运行代码的时候,没有任何问题,在以普通用户运行这个脚本的时候,出现了权限问题,所以不能运行,所以大家需要注意下,运行时要以ROOT的身份,呵呵。。。
 
下面贴下运行的权限问题时的报错如下:
[root@localhost shell]# su joe
[joe@localhost shell]$ sh qqgroup.sh 
please input QQ number:
789
please input nickname:
kdsjf
please input you local:
you input null,please input you local!
skdfj
************************************
************************************
you input QQ_Number is :789
you input nickname  is :kdsjf
you input local     is :skdfj
touch: cannot touch `member.info': Permission denied
qqgroup.sh: line 52: member.info: No such file or directory
qqgroup.sh: line 53: member.info: No such file or directory
qqgroup.sh: line 54: member.info: No such file or directory
qqgroup.sh: line 56: member.info: No such file or directory
mkdir: cannot create directory `log': Permission denied
 
如果哪位知道如何解决的话,告诉下,不胜感谢,呵呵。。。
程序如果有问题,欢迎指出,我的联系方式脚本里都有的,希望和大家DAY DAY UP...

 

附件:http://down.51cto.com/data/2354563

本文转自你是路人甲还是霍元甲博客51CTO博客,原文链接http://blog.51cto.com/world77/231115如需转载请自行联系原作者


world77

上一篇:KUBERNETES03_命名空间、Pod是什么、Deployment多副本能力、扩缩容、自愈或故障转移、滚动更新、版本回退(五)


下一篇:优云,新一代运维PaaS平台