美文网首页linux运维
linux学习--week19--shell

linux学习--week19--shell

作者: 亮仔_c1b5 | 来源:发表于2019-11-24 20:54 被阅读0次

    4天

    Shell脚本大纲
    1.shell介绍
    2.shell变量
    3.shell 判断语句 if case

    4.shell 循环语句 for while 
    5.shell 函数
    6.shell 数组   |  awk 数组
    

    git
    jenkins

    1.Shell课程大纲
    2.什么是Shell
    3.什么是Shell脚本
    4.Shell脚本能做什么
    5.shell脚本需要的预备知识
    6.shell脚本如何才能学好
    7.Shell脚本编写规范、执行方式。

    2.什么是shell脚本
    1) 将系统命令堆积在一起,顺序执行(简称: 系统命令堆积)
    2) 特定的格式 + 特定的语法 + 系统的命令 = 文件。

    本章课程内容大纲
    1.什么是变量variables?
    2.变量命名是否有规范?
    3.变量定义的几种方式?
    4.变量赋值的方式read?
    5.变量删除与替换?
    6.变量的整数运算?

    需求1:通过位置变量创建 Linux 系统账户及密码,执行 var1.sh username password

    useradd 1 echo "2" | passwd --stdin $1

    需求2:通过位置变量创建 Linux 系统账户及密码,执行 var1.sh username password,控制最多传递两个参数。
    if [ # -ne 2 ];then echo "Usage:0 { username and password }"
    exit
    fi
    useradd 1 echo "2" | passwd --stdin $1

    需求3: 如上两个需求,仅能root用户执行,普通用户无法执行.

    1.首先判断你的身份是root还是普通用户,如果是root则继续,如果普通用户则退出

    if [ $USER != root ];then
    echo "Permission denied Please change su - root"
    exit
    fi

    2.判断你输入的参数个数,如果不是2位,则提示错误

    if [ # -ne 2 ];then echo "Usage:0 { username and password }"
    exit
    fi

    3.正常创建用户

    useradd 1 echo "2" | passwd --stdin $1

    需求2:变量string="Bigdata process is Hadoop, Hadoop is open source project",执行脚本后,打印输出string变量,并给出用户以下选项:
    1)、打印string长度
    2)、删除字符串中所有的Hadoop
    3)、替换第一个Hadoop为Linux
    4)、替换全部Hadoop为Linux
    用户输入数字1|2|3|4,可以执行对应项的功能,输入q|Q则退出交互模式

    需求3:查看内存/当前使用状态,如果使用率超过80%则报警发邮件,思路如下:
    1.
    (()) 运算[] 运算
    () 命令{} 变量名


    1.什么是变量
    传递数据的一种方式 固定的名称 ---> 不固定的值
    2.变量定义规范
    1.命名
    2.变量 = 值 之间不能出现空格
    3.如何定义变量
    1.自定义变量
    2.系统环境变量 (系统自带,谁都可用)
    3.预先定义好的变量 12 0# ? $$@ $*
    4.交互式定义变量read
    -p: 提示用户的输入信息
    -t: 超时时间
    -s: 不显示输入的内容(密码类)
    -n: 多少个字符
    5.变量替换
    # 从头到尾匹配,匹配一次
    ## 从头到尾匹配,贪婪匹配
    % 从尾匹配到头,匹配一次
    %% 从尾匹配到头,贪婪匹配
    // 替换一次
    /// 替换多次

    6.变量运算 (())[] expr
    7.${#var} #统计变量的字符长度


    1.什么是if
    条件 起床
    真 赚钱
    假 扣钱

    2.为什么要使用if
    判断上一次执行的命令是否成功 如果成功则继续 失败则停止.

    3.if基础语法
      单条件
    if [ 有钱 ];then

    fi

    双条件
    if [ 有钱 ];then

    else

    fi

    多条件
    if [ 有钱 ];then

    elif [ 人帅 ];then

    elif [ 上班 ];then

    else

    fi

    4.基于文件进行判断
    备份

    参数 说明 示例
    -e 如果文件或目录存在则为真 [ -e file ]
    -s 如果文件存在且至少有一个字符则为真 [ -s file ]
    -d 如果文件存在且为目录则为真 [ -d file ]
    -f 如果文件存在且为普通文件则为真 [ -f file ]
    -r 如果文件存在且可读则为真 [ -r file ]
    -w 如果文件存在且可写则为真 [ -w file ]
    -x 如果文件存在且可执行则为真 [ -x file ]

    5.基于整数进行判断
    参数 说明 示例
    -eq 等于则条件为真 [ 1 -eq 10 ]
    -ne 不等于则条件为真 [ 1 -ne 10 ]
    -gt 大于则条件为真 [ 1 -gt 10 ]
    -lt 小于则条件为真 [ 1 -lt 10 ]
    -ge 大于等于则条件为真 [ 1 -ge 10 ]
    -le 小于等于则条件为真 [ 1 -le 10 ]

    参数 说明 示例 额外解释
    == 等于则条件为真 [ "a" == "b" ]
    != 不相等则条件为真 [ "a" != "b" ]
    -z 字符串的长度为零则为真 [ -z "a" ] 内容空则为真 -n 字符串的长度不为空则为真 [ -n "a" ] 有内容则为真

    6.基于字符进行判断
    7.基于正则进行判断
    8.逻辑语句 && ||

    需求1:判断一个机器是否存活,能ping通就算存活。

    需求2:监控内存小于500M和磁盘容量小于10G,则发邮件报警
      1.剩余内存低于500M free -m |awk '/^Mem/ {print NF}'   2.剩余磁盘低于10G df -h|awk '/\// {print $(NF-2)}'

    需求3:检测本机当前用户是否为管理员,如果是则使用 yum 安装 vsftpd 如果不是,则提示您非管理员。

    if [ $USER == "root" ];then
    yum install vsftpd -y
    else
    echo "你不是管理员"
    fi

    需求4:根据不同的系统,配置不同的yum源
      1.获取相同系统,不同的版本
      2.根据不同的系统配置不同yum源

    需求5:安装不同版本的PHP方式,使用echo输出即可,不用真的安装。
      1.给一个选择的菜单
      2.给一个数字编号 1 2 3 4
      3.根据用户的选择进行判断

    需求6:
    1.如果姑娘小于18岁,打印“未成年”
    2.如果姑娘大于18岁小于25岁,打印“表白”
    3.如果姑娘大于25岁小于45岁,打印“阿姨好”。
    4.如果姑娘大于45岁,打印“奶奶好”

    需求7:在每月第一天备份并压缩/etc目录的所有内容,存放到/opt/bak目录,存放的形式2019_04_10_etc.tar.gz
      1.备份什么 /etc
      2.备份到哪 /root/bak
    3.备份的方式 tar压缩
      4.备份周期 每月1号 crond

    需8:提示用户输入年份后判断该年是否为闰年 能整除4, 并且不能被100整除则为 闰年
    润年:
    1.能整出4 不能被100整除
    3.能直接除以400

    case

    需求1:使用case实现nginx服务启停脚本。
    需求2:使用case实现nginx状态监控脚本。
    需求3:使用case实现php-fpm状态监控脚本。
    需求4:编写脚本,根据用户输入的服务名称查询该服务的状态,如果服务不存在则直接报错。如果服务启动则提示 [重启和停止操作],如果服务没有启动则提示 [启动和取消操作]


    if:
    1.什么是if
    2.if使用场景 ( if无处不在 )
    3.if语法
    单分支 双分支 多分支
    4.if使用例子
    5.条件判断
    基于文件 -d -f -e 备份
    基于字符 = != 字符串比较,需要别人输出字符串确定的
    基于整数 -eq -ne -lt -gt -ge -le
    基于正则 [[ =~ 正则语句 ]]

    case
    1.什么是case , 根据条件进行选择, 而选择内容是提前预设定好的
    2.case使用场景
    1.服务的启动与停止
    2.编写菜单栏
    3.简单跳板机程序
    3.case基本的语法
    4.case示例


    下周:
    for
    while
    break continue exit
    functions

    实例: if + case + functions + for 
    

    相关文章

      网友评论

        本文标题:linux学习--week19--shell

        本文链接:https://www.haomeiwen.com/subject/jjlrwctx.html