• Linux-实操篇8-shell脚本编写


    一、shell是什么

    在这里插入图片描述

    二、shell脚本如何执行

    2.1 新建一个shell脚本

    ## 第一步新建一个shell脚本
    vim aaa.sh
    ## 内容如下,#!/bin/bash 表示shell脚本的执行协议,必须要写
    #!/bin/bash
    echo "hello word!!!"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 执行方式

    方式一:先给脚本权限,在输入脚本的绝对路径或相对路径

    chmod 777 aaa.sh
    ./aaa.sh
    
    • 1
    • 2

    方式二:★直接用sh + 脚本,不需要权限

    sh aaa.sh
    
    • 1

    三、句法

    3.1 shell变量

    定义变量的规则:
    在这里插入图片描述
    将命令的返回值赋给变量(重点)
    在这里插入图片描述
    多行注释
    在这里插入图片描述

    3.1.1 系统变量
    #!/bin/bash
    echo "HOME=$HOME"
    echo "PWD=$PWD"
    echo "SHELL=$SHELL"
    echo "USER=$USER"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3.1.2 自定义变量
    echo 自定义变量
    AAA=100
    BBB=张三
    # 撤销变量
    unset BBB
    echo AAA=$AAA
    echo BBB=$BBB
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3.1.3 静态变量

    静态变量不能 unset

    echo 静态变量
    readonly CCC=200
    echo 静态变量CCC=$CCC
    
    • 1
    • 2
    • 3
    3.1.4 配置环境变量
    export 变量名=变量值        (功能描述:将shell变量输出为环境变量)
    source 配置文件             (功能描述:让修改后的配置信息立即生效)
    echo $变量                 (功能描述:查询环境变量的值
    
    • 1
    • 2
    • 3
    vim /opt/profile
    ## 在其他添加
    export TOMCAT_9001=/opt/tomcat_9001
    ## 使得环境变量生效
    source /etc/profile
    ## 验证
    echo $TOMCAT_9001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3.1.5 位置参数变量

    注意在这里插入图片描述
    注意:再center7.x以后 $* 和 $@ 是一样的,都是分开的多个参数
    aaa.sh

    echo ------------------
    echo 位置参数变量
    echo "各个参数:$0,$1,$2"
    echo "参数:$*"
    echo "参数:$@"
    echo "参数个数:$#"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    执行

    sh aaa.sh 100 200 300
    
    • 1

    在这里插入图片描述

    3.1.6 预定义变量

    shell设计者预算定义好的参数
    在这里插入图片描述

    echo 预定义参数
    echo "当前的进程号:$$"
    # 后台运行aaa.sh
    ./bbb.sh $
    echo "后台运行的最后的进程号:$!"
    echo "上一个命令的返回值:$?"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.2 运算符

    在这里插入图片描述

    echo 运算符
    ## 注意这里是2个小括号才可以
    echo "1+1=$((1+1))" 
    ## 推荐
    echo "1+1=$[1+1]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.3 条件判断语句

    在这里插入图片描述
    在这里插入图片描述

    echo 条件判断
    if [ "ok" = "ok" ]
    then
            echo ok
    fi
    if [ 1 -lt 1 ]
    then
            echo 小于
    fi
    if [ -r aaa.sh ]
    then
            echo 可以读
    fi
    if [ -f aaa.sh ]
    then
            echo 常规文件
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3.4 流程控制 if case for while

    3.4.1 if 条件判断

    在这里插入图片描述

    
            echo 小于
    fi
    if [ -r aaa.sh ]
    then
            echo 可以读
    fi
    if [ -f aaa.sh ]
    then
            echo 常规文件
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    3.4.2 case 选择

    在这里插入图片描述

    read -p "请输入星期:" DAY
    echo case 语句
    case $DAY in
    "1")
            echo "星期一"
    ;;
    "2")
            echo "星期二"
    ;;
    "3")
            echo "星期三"
    ;;
    *)
            echo "星期天"
    ;;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    3.4.3 for循环

    在这里插入图片描述
    在这里插入图片描述

    echo "for的两种用法:"
    for i in $@
    do
            echo "then num is $i"
    done
    SUM=0
    for((i=1;i<100;i++))
    do
            SUM=$[$SUM+$i]
    done
    echo "SUM=$SUM"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    3.4.4 while循环

    在这里插入图片描述

    echo while 循环
    i=1
    WSUM=0
    while [ $i -le $1 ]
    do
    WSUM=$[$WSUM+$i]
    i=$[$i+1]
    done
    echo "WSUM=$WSUM"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.5 read读取控制台输入

    在这里插入图片描述
    在这里插入图片描述

    echo 从前台输入
    ## 10秒内输入
    read -t 10 -p "10秒内输入:" DAYTIME
    echo $DAYTIME
    
    • 1
    • 2
    • 3
    • 4

    3.6 ★函数

    在这里插入图片描述

    3.6.1 系统函数
    basename 函数 获取文件名

    在这里插入图片描述

    dirname 函数 获取文件路径

    在这里插入图片描述

    echo 系统函数
    echo "dirname"  $(dirname /usr/myshell/aaa.sh)
    echo "basename" $(basename /usr/myshell/aaa.sh)
    echo "basename" $(basename /usr/myshell/aaa.sh .sh)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.6.2 ★自定义函数

    在这里插入图片描述

  • 相关阅读:
    win10系统升级一段时间后,内存占用过高
    Kubernetes(k8s)— Concepts — Containers
    LiveNVR监控流媒体Onvif/RTSP功能-海康摄像头海康NVR通过EHOME协议ISUP协议接入支持转GB28181级联
    视频融合共享平台LntonCVS视频监控安防系统运用多视频协议建设智慧园区方案
    Prometheus 与 VictoriaMetrics对比
    CNN基础与LeNet框架
    泛型的约束不止一面
    西瓜书-2习题
    【数据结构】设计环形队列
    oracle RAC 集群无法启动
  • 原文地址:https://blog.csdn.net/fen_dou_shao_nian/article/details/121783151