43-Shell编程基础

作者: 杨丶子 | 来源:发表于2019-06-05 08:33 被阅读130次

    格式

    #!/bin/bash
    #!幻数 指定脚本用的命令解释器
    执行脚本
    sh
    sh +x
    
    

    1、为什么要学习shell编程?

    Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,例如:自动备份、监控、自动安装服务
    Shell编程是Linux运维人员必须要会编程语言。最简单的编程语言。
    编程也是运维人员必须具备的本领:
    Shell、python是运维人员必须具备的本领

    2、什么是Shell?

    shell就是一个解释器(翻译官),命令行的命令以及脚本都会通过shell解释,传给操作系统,处理后在输出给用户。

    3、Shell的分类

    /bin/sh、/bin/bash、/usr/bin/sh、/usr/bin/bash

    4、CentOS7默认脚本是Shell

    [root@zhang ~]# echo $SHELL
    /bin/bash
    
    

    5、什么是Shell脚本?

    程序、命令放入文件里执行,这个文件称之为Shell脚本文件。
    工作中最多的编程写脚本,存放在文件里。

    二、变量

    1.变量

    方便脚本里面进行重复使用

    命名规则
        看见变量名称  识别变量作用
        不能以数字开头
    
    变量分类
        局部变量(普通变量)
        IP=10.0.0.200
        time=2019-01-01
    
    全局变量(环境变量)
        系统创建
            在整个系统中生效
        大部分地方意思一样
        一般是大写
    
    特殊变量
            \$?  数字  \$#  \$*
    
    

    2.局部变量(普通变量)

    image

    3.引号系列

    image

    4.特殊变量

    image

    5.局部变量和全局变量区别:

    [root@m01 /server/scripts]# LIDAO=996
    [root@m01 /server/scripts]# 
    [root@m01 /server/scripts]# echo $LIDAO
    996
    [root@m01 /server/scripts]# cat show.sh 
    #!/bin/bash
    echo $LIDAO
    [root@m01 ~]# sh show.sh  \\执行脚本为空
    
    [root@m01 ~]# 
    [09:17 root@m01 ~]#  export LIDAONB  \\添加全局变量
    [09:22 root@m01 ~]# echo $LIDAONB
    666
    [09:22 root@m01 ~]# sh show.sh 
    666
    
    

    6.局部变量和全局变量区别

    https://www.processon.com/view/link/5a0e4380e4b06c8e10923353

    image image

    7.awk的 -v 参数

    [09:49 root@m01 ~]# x=10
    [09:49 root@m01 ~]# y=99
    [09:49 root@m01 ~]# echo $x
    10
    [09:49 root@m01 ~]# echo $y
    99
    [09:49 root@m01 ~]# awk 'BEGIN{print $x/$y}'
    awk: cmd. line:1: fatal: division by zero attempted
    [09:49 root@m01 ~]# awk -vn1=10 -vn2=99 'BEGIN{print n1/n2}'
    0.10101
    [09:51 root@m01 ~]# awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
    0.10101
    [09:51 root@m01 ~]# awk -vx=10 -vy=99 'BEGIN{print x/y}'
    0.10101
    [09:53 root@m01 ~]# 
    
    

    8.利用shell编译小型计算器

    [10:18 root@m01 ~]# vim show.sh 
    #!/bin/bash
    . /etc/profile
    x=$1
    y=$2
    
    echo $1\+$2= ;awk -vx=$x -vy=$y 'BEGIN{print x+y}'
    echo $1\-$2= ;awk -vx=$x -vy=$y 'BEGIN{print x-y}'
    echo $1\*$2= ;awk -vx=$x -vy=$y 'BEGIN{print x*y}'
    echo $1\/$2= ;awk -vx=$x -vy=$y 'BEGIN{print x/y}'
    
    [10:19 root@m01 ~]# sh show.sh 5 6
    5+6=
    11
    5-6=
    -1
    5*6=
    30
    5/6=
    0.833333
    
    

    知识有限暂不支持小数运算

    image image

    9.特殊变量中简单判断参数个数:

    image image

    10.判断目录存不存在,不存在就创建

    image image

    三、判断语句

    if判断句语法:单分支: 如果。。。那么就
    if [ 表达式 ]
    then命令
    else
    exit 退出
    fi 果如

    1.if语句格式:

    if [ 表达式 ]
        then命令
        exit 退出
    fi
    
    
    image image

    2.对比两个数值大小

    image image

    3.检查定时任务是否运行中

    image image

    避免过滤的时候 过滤掉grep命令自己

    image

    四、循环语句

    for语句

    image

    五、扩展:

    read命令

    http://man.linuxde.net/read

    从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

    -p:指定读取值时的提示符;
    -t:指定读取值时等待的时间(秒)。
    
    
    image image

    相关文章

      网友评论

        本文标题:43-Shell编程基础

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