Linux Shell脚本小程序不定时更新

我觉得Linux比windows好,在这个系统上我找到了久违的激情。我觉得shell和批处理是一个类似的语言(我没用过批处理但是有一种感觉),但是shell用着更爽,linux稳定执行快,就是语法略烦。

1傻逼说不能正则来实现固定的读每天的对账文件,于是写了一个shell脚本,定时完成昨天的对账文件的删除和今天的对账文件的复制,保持ftp目录就一个文件

代码:

#!/bin/sh------------------------------------------------------------------------------------------使用某个shell
#get date
cd /home/aipjt/rpt/                                ---------------进入目录
name=POSYCCHK.`date -u +%y%m%d`-------------------当日的时间
cp $name /home/aipjt/yicheng-------------------------------开始复制
if [ $? -eq 0 ];then   --------------------------------------------------判断是否复制成功
echo "复制$name成功" >>/home/aipjt/log.txt ------------------------------重定向
else
echo "复制$name失败" >>/home/aipjt/log.txt
fi


name2=POSYCCHK.`date -d last-day +%y%m%d`----------------------------------------生成对账文件的名字
rm  /home/aipjt/yicheng/$name2-----------------------------------------实现删除
if [ $? -eq 0 ];then---------------------------------判断上一句命令是否成功。
echo "删除$name2成功" >>/usr/test/dellogs.txt
else
echo "删除$name2失败" >>/usr/test/dellogs.txt
fi

shell的本质其实就是很多命令的批量处理,解释性语言。

这个例子犯的最大的错误就是 if这里,正确的写法是if空格[空格判断空格】;then很不容易发现的错误。

这个例子主要用的date,cp,rm

$?(上一个命令是否正确执行0是正常)

 >>重定向内容到文件这个是在一个文件里面累加

>是生成新的文件

··这个符号是在英文状态1的左边,作用是在字符串里面执行命令。  比如 echo " `ls -l "如果没有这个的话 终端会输出ls-l字符串,但是有了的话,就是列出当前目录

写完程序之后要实现定时执行,很明显就要用crontab命令咯,里面是  * * * * *   sh脚本的绝对路径。 然后service crond restart起效。ok

不定时更新。


-----------------------------------------------------------------------------2013-12-11---------------------------------------------------------------------------------------

今天忙完了,又开始学习一下shell,输入字符串或者数值,然后一直到输入end就结束程序

#!/bin/sh

while [ 1 -eq 1]

do 

echo "please input a number then break until end"

read name

if [ $name = end ];then

break;

fi

done

这个程序遇到的最大的问题是,数值和字符串,eq le这些是比较数值的,但是 = != 是比较字符串。!


第二个shell是1-100的累加

这个是while版的。

#!/bin/sh

i=0

sum=0

while [ $i -le 100 ]

sum=$[$sum+$i]

done

echo "result is :$sum"


这个是for循环版本

#!/bin/sh

sum=0

for num in {100..1}

do

sum=$[$sum+$num]

done

echo "add:"$num


[]这个是进行数学运算。


-----------------------------------------------------------2013-12-12------------------------------------------------------------------------

function:查看某个全路径下是否存在某个目录或者文件如果不存在就进行创建

#!/bin/sh

echo "please input a filename or directory name"

read filename

echo "your input is $filename"

if [ -e $filename ];then

echo "your input is a file"

echo "is exist"

elif [ -d $filename ];then

echo "your input is a directory"

echo "is exist"

else

echo "not exist"

echo "do you want to mkdir[y/n"

fi

read create

if [ $create = y ];then

echo `mkdir $filename`-----------------------------这里有一个致命的漏洞就是都创建成了目录了!!!!!

if [ $? -eq 0 ];then

echo "创建成功"

exit

else

echo "创建失败"

exit

fi



funciton:列出目录下的所有的文件并输出

#!/bin/sh

echo "say hello to files"

cd /usr/test/

num=0

for I in `ls /usr/test/`;do

echo "hello $I"

((num+=1))--------------------------------------数学运算可以这么做省去了$

done

echo "finish the number of files are $num"







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值