shell之一些测试脚本

比较文件有无修改,通过修改时间判别
# !/bin/bash
dir=$1

for file in `ls $dir`
do
    if [ -d $dir/$file ]
    then
        echo $file is dir
    else
        time=`stat $file | tail -2 | head -1 | cut -d' ' -f2-3 | cut -d. -f1`
        name=$file
        currentTime=`date "+%Y-%m-%d %H:%M:%S"`
        echo "$name  $time $currentTime"
        oldtime=`date +%s -d "$time"`
        newtime=`date +%s -d "$currentTime"`
    #    echo $(($newtime-$oldtime))
        if [ $(($oldtime-$newtime)) -ge 0 ]
        then 
            echo "$file is a new file"
        else
            echo "$file not modify"
        fi         
    fi
done
自动创建n的测试文件
#!/bin/bash
#echo $#
if [ $# -eq 1 ]
then
    nums=$1
#    echo $nums
    for((i=0;i<$nums;i++))
    do
        #sleep 1
            touch ./file-`date +%F-%H-%M-%S`-$i.txt
    done

else
    echo "you need input nums like ./app nums,bye"
    exit -1
fi
判断时段内文件有无更新
# !/bin/bash
dir=$1

for file in `ls $dir`
do
    if [ -d $dir/$file ]
    then
        echo $file is dir
    else
        file=$dir/$file
        #获取最后修改时间,并截取成 y-m-d h:m:s
        time=`stat -c %y $file | cut -d. -f1`
        name=$file
        currentTime=`date "+%Y-%m-%d %H:%M:%S"`
        echo "$name  $time $currentTime"
        #将字符串时间转换成数字,距1970年的时间
        #文件当前的最后修改时间
        oldtime=`date +%s -d "$time"`
        #系统当前时间
        newtime=`date +%s -d "$currentTime"`
        #时间偏移量,这里定义为一天24*60*60,意味着一天扫描一次,如需修改扫描次数,修改这个地方就行
        shifttime=86400
        #这里用当前文件最后修改时间,与一天前的时刻做比较,如果大于0,说明文件在从昨天这个时刻到今天这个时刻之间发生了变化,偏移量不是一天时,代表的是这段时间内
        #测试 shifttime=600 10分钟
        #shifttime=600
        if [ $(($oldtime-$newtime+$shifttime)) -ge 0 ]
        then 
            echo "$file is a new file"
        else
            echo "$file not modify"
        fi         
    fi
done
统计history信息
#!/bin/bash
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi

if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi

export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTDIR/${LOGNAME}/*.history.* 2>/dev/null

捕获信号

#!/bin/bash

trap "echo sigint" SIGINT
echo "This is a test program"
    count=1
    while [ $count -le 10 ]
do
    echo "Loop #$count"
    sleep 2
    count=$[ $count +1  ]
done
echo "This is the end of the test program"

read使用

#!/bin/bash

#simple read
echo -n "Enter your name:"
read name
echo "Hello $name,welcome!"

#read 指定
read -p "Please enter your age:" age
days=$[ $age * 365 ]
echo "That makes you over $days days old"

#read 不带变量,存在默认变量REPLY中 
read -p "Please enter your age:"
echo "your age is $REPLY"

#read 延时选项 
read -t 2 -p "Please enter your age:"
echo "your age is $REPLY"

#read 默读 
read -s  -p "Please enter your passwd:"
echo "your passwd is $REPLY"





read读文件
#!/bin/bash 

#read file

if [ $# -lt 1 ]
then
    echo "Usage ./readfile.sh testfile"
    exit -1
fi

echo "file name is $1"

count=1
cat $1 | while read line
do
    echo "Line $count:$line"
    count=$[ $count+1 ]
done
echo "Finished processing the file"

打开文件

--------------------------------------------------------------------------------
#!/bin/bash

#open
exec 3> test
echo "This is a test line of data" >&3
#close 
exec 3>&-
echo "This won't work" >&3

 

posted @ 2017-02-24 19:46  tla001  阅读(286)  评论(0编辑  收藏  举报
个人网站 www.tla001.cn