• 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
  • 相关阅读:
    vmware虚拟机Linux(redhat)上用户密码忘记了怎么办?
    redis常见数据类型操作命令
    spring boot自动配置原理
    linux使用xshell连接linux教程
    KafkaRebalance
    kafkaconnect研究
    Kafkarestproxy
    Window Nacos 单机配置与启动
    iptables控制
    在c/c++中输入彩色日志输出,带有带有颜色的打印
  • 原文地址:https://www.cnblogs.com/tla001/p/6440029.html
Copyright © 2020-2023  润新知