zoukankan      html  css  js  c++  java
  • 第三部分shell编程3(shell脚本编写1)

    做监控和备份最多

    1. shell脚本是什么
    它是一种脚本语言,并非编程语言
    可以使用一些逻辑判断、循环等语法
    可以自定义子函数
    是系统命令的集合
    shell脚本可以实现自动化运维,大大增加我们的工作效率

    第一个shell脚本:
    mkdir shell
    cd shell/
    vim 1.sh
    `
    `#! /bin/bash
    `#This is a test shell script
    `
    `echo "123456."
    `touch aming.111
    `date

    2. shell脚本结构以及执行方法
    开头行指定bash路径: #! /bin/bash
    以#开头的行作为解释说明
    脚本的名字以.sh结尾,用于区分这是一个shell脚本
    执行方式有两种:chmod +x 1.sh; ./1.sh
    如果没有执行权限可以 bash 1.sh
    也可以 sh 1.sh 可以查看ls -l /bin/sh

    bash -x 1.sh 可以查看脚本执行过程


    cal 输出日历的
    cal -y 输出整年的日历

    LANG=en

    3. 学会date命令的用法
    date +%Y-%m-%d, date +%y-%m-%d ,date +%F 年月日
    date +%H:%M:%S = date +%T 时间


    date +%s 时间戳
    date -d "+1day"一天后
    date -d "-1day"一天前
    date -d "-1day" +%F 一天前的日期是多少
    date -d "-1month" 一月前

    date -d "-1hour" 一小时前
    date -d "-1hour" +%T 一小时前的时间是多少,下面几个一样

    date -d “-1min” 一分钟前
    date -d “-1sec” 一秒前
    date +%w, 星期 date +%W 一年的第几周,一年有52个周

    把运行这个脚本的时间去生成一个日志,保存在tmp目录下
    vim 2.sh
    #! /bin/bash
    d=`date +%T`
    logname=$d.log
    touch /tmp/$logname

    执行就tmp就有这个日志了

     

     

    bc 是计算器
    一种是直接输入运输
    一种 echo "365/7" |bc

    4. shell脚本中的变量
    当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替
    使用条件语句时,变量是必不可少的
    引用某个命令的结果时,用变量替代
    写和用户交互的脚本时,变量也是必不可少的
    内置变量 $0, $1, $2…
    数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]

    echo "scale=2;5/2"|bc 输出的是2.50

    vim 3.sh
    #! /bin/bash
    read -p "Pleaswe input Number" n
    echo $n

    ========
    read -t 3 -p "Pleaswe input Number" n t就是超时时间
    ===============

    vim 4.sh
    #! /bin/bash
    echo $0
    echo $1
    echo $2

    输入参数的时候$0输出的是本身4.sh

    vim 5.sh
    #! /bin/bash
    n1=0
    while :; :表示真的意思,也可以是1
    do
    read -p "please inpty a number :" n
    m=`echo $n |sed 's/[0-9]//g'` m就是把数字全部删除掉然后判断是不是为空
    l=`echo $m|wc -c` 如果是纯数字的话那肯定是空的,l如果不等
    if [ $l !="1" ]; then 1就不是空的,肯定包含数字或者是纯字母
    echo "the charater you input is not a number."
    n1=`echo "$n1+1"|bc` l如果不等1就给他记录一次
    else
    echo "your number is $n" 如果是纯数字说明是空的就输出,然后退出
    exit 0
    fi
    if [ $n1 == "5" ];then 如果输入的不是数字超过5次就退出
    exit 1
    fi
    done

     

    --------------
    a=
    echo $a |wc -c c是有几个字符串
    输出的是1代表空字符,因为他有一个换行符

    echo "12345a" |sed 's/[0-9]//g' 这里输出是a

    echo "12345" |sed 's/[0-9]//g' 这里输出是空的
    ------------
    5. shell中的逻辑判断
    格式1:if 条件 ; then 语句; fi
    格式2:if 条件; then 语句; else 语句; fi
    格式3:if …; then … ;elif …; then …; else …; fi
    逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等

    -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意到处都是空格
    可以使用 && || 结合多个条件
    n=5
    if [ $n -gt 2 ] && [ $n -lt 10 ]; then echo ok; else echo nook;fi
    =
    if [ $n -gt 2 -a $n -lt 1 ]; then echo ok; else echo nook;fi

    -a 是与的意思
    =========================
    if [ $n -gt 2 ] || [ $n -lt 1 ]; then echo ok; else echo nook;fi
    =
    if [ $n -gt 2 -o $n -lt 1 ]; then echo ok; else echo nook;fi

    -o 是或者的意思

    =========================
    格式1和格式2
    vim 6.sh
    #! /bin/bash
    n=10
    if [ $n -gt 5 ]
    then
    echo "greater than 5"
    else
    echo "not greater than 5"

    fi

    ======================
    格式3
    vim 6.sh
    #! /bin/bash
    n=3
    if [ $n -gt 5 ]
    then
    echo "greater than 5"
    elif [ $n -lt 2 ]
    then
    echo "less than 2"
    else
    echo "greater than 2"

    fi


    6. if 判断文件、目录属性
    [ -f file ]判断是否是普通文件,且存在
    [ -d file ] 判断是否是目录,且存在
    [ -e file ] 判断文件或目录是否存在======
    [ -r file ] 判断文件是否可读
    [ -w file ] 判断文件是否可写
    [ -x file ] 判断文件是否可执行

    echo $RANDOM 生成一个随机数
    echo $RANDOM$RANDOM
    echo $RANDOM$RANDOM$RANDOM |cut -c 1-10 只要前10位
    或者
    mkpasswd
    mkpasswd -l 20
    mkpasswd -l 20 -s 0 特殊符号
    mkpasswd -l 20 -s 0 -c 0 -C 0

     

  • 相关阅读:
    强化学习
    训练深度神经网络失败的罪魁祸首是退化
    wod2vec&fasttext&doc2vec#ida2vec
    leetcode动态规划之最长回文子串
    数据增强
    【认证与授权】Spring Security自定义页面
    【认证与授权】Spring Security的授权流程
    【认证与授权】Spring Security系列之认证流程解析
    【认证与授权】Spring Security系列之初体验
    【认证与授权】2、基于session的认证方式
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4854986.html
Copyright © 2011-2022 走看看