zoukankan      html  css  js  c++  java
  • shell 脚本复习

    目标

    写个测试脚本,重启50次 , 每次重启后执行一些命令,保存到文本,然后再次重启 。简单脚本, 直接 shell 走一波。

    思路

    1. 每次输出一波文本 , 则每次用一个目录来保存这些文本
    2. 重启后直接执行命令 , 那么需要在 rc.local 添加执行命令
    3. 执行完再重启, 就需要 reboot 了
    4. 次数计数,似乎只能在本地文本中保存次数了。先把次数写到文本,重启后,再读,再累加。

    脚本

    这里是伪脚本,原脚本忘记抄下来了。可能有部分不对的地方。

    #!/bin/bash
    # 当前目录
    cur_dir=`pwd`
    #计数文本
    cot="$cur_dir/cot.txt"
    #最大次数
    limit=50
    
    if[[ -e $cot ]]
    then
        #计数文本存在
        #取文本内容
        num=`cat $cot`
        #先计数加1
        echo $((num+1)) > $cot
        #休息一会儿,等系统初始化
        sleep 5m
    else
        #第一次,没有文本,计数文本不存在,初始化一个文本
        echo "1" > $cot
    fi
    
    。。。。。。。
    #要执行的脚本
    。。。。。。
    
    #取数字
    num=`cat $cot`
    #判断是不是到达最大次数了
    if[[ $((num)) -eq $limit ]]
    then
        #到次数,退出
        exit 0  
    fi
    #没到次数,重启
    shutdown -r
    

    简单一个脚本,搞了几个小时,还是忘性大。。。

    简单几个点吧, 这里再理一下。

    shell 字段串转数字

    语法:$((num))

    转数字后可以跟其他数字做比较,也可以做计算。也可以直接拿字符串的数字,在这个语法里计算

    例如:

    num="123"
    $((num+1))   # 结果是:124
    

    取字符串长度

    这里也提一下吧 ,语法: ${#num}

    num="abc123"
    ${#num}         # 结果是: 6
    

    文件的判断符号

    • -b $FILE :如果FILE存在且为块特殊文件,则为True。

    • -c $FILE :如果FILE存在且为特殊字符文件,则为True。

    •  -d $FILE :如果FILE存在且为目录,则为True。

    •  -e $FILE :如果FILE存在且为文件,则为True,无论类型(节点,目录,套接字等)如何。

    •  -f $FILE :如果FILE存在且为常规文件(不是目录或设备),则为True。

    •  -G $FILE :如果FILE存在且与运行命令的用户具有相同的组,则为True。

    •  -h $FILE :如果FILE存在且为符号链接,则为True。

    •  -g $FILE :如果FILE存在且设置了set-group-id(sgid)标志,则为True。

    •  -k $FILE :如果FILE存在且设置了粘滞位标志,则为True。

    •  -L $FILE :如果FILE存在且为符号链接,则为True。

    •  -O $FILE :如果FILE存在并且由运行该命令的用户拥有,则为True。

    •  -p $FILE :如果FILE存在且为管道,则为True。

    •  -r $FILE :如果FILE存在且可读,则为True。

    •  -S $FILE :如果FILE存在且为套接字,则为True。

    •  -s $FILE :如果FILE存在且非零大小,则为True。

    •  -u $FILE :如果设置了exists和set-user-id(suid)标志,则为True。

    •  -w $FILE :如果FILE存在且可写,则为True。

    •  -x $FILE :如果FILE存在且可执行,则为True。

    sleep 命令

    sleep NUMBER [SUFFIX]...
    

    NUMBER可以是正整数或浮点数。

    SUFFIX可以是下列之一:

    s - 秒(默认)
    m - 分钟
    h - 小时
    d - 天
    

    sleep 是阻塞,且不可停止。只能杀进程了

    数字的比较大小

    • -gt 大于
    • -lt 小于
    • -eq 等于
    • -ne 不等于
    • -ge 大于等于
    • -le 小于等于

    重启命令

    • reboot : 强制重启,强制停止一切进程。
    • shutdown -r : 等正在进行的进程结束后,再重启

    输出到文本

    • > : 清空文本,再写入
    • >> : 追加到文本最后,有换行

    如果文章有帮助到您,请点个赞,您的反馈会让我感到文章是有价值的

  • 相关阅读:
    Hdu 1094 A+B for Input-Output Practice (VI)
    Hdu 1091 A+B for Input-Output Practice (III)
    Hdu 1092 A+B for Input-Output Practice (IV)
    Hdu 1087 Super Jumping! Jumping! Jumping!
    scala学习笔记2(类,继承,抽象类)
    scala学习笔记1(表达式)
    把以前写的几个Linux Framebuffer小工具放到github上了,直接去下吧,别找我要了
    一位台湾朋友刚建的一个FTK的论坛,欢迎加入讨论
    Linux高端内存的由来
    read系统调用深度剖析
  • 原文地址:https://www.cnblogs.com/ElEGenT/p/13263619.html
Copyright © 2011-2022 走看看