• 【Shell】简单的交互式脚本


    交互式脚本

    前言:
    最近写了个服务部署脚本,为了简化操作,我把脚本的执行命令全部封装到脚本中,这样在部署的时候,小伙伴只需要通过输入不同的选择,就可以完成部署,这样也避免操作失误,对环境产生影响;

    准备

    首先我们来看一下,写一个交互式脚本需要了解shell哪些知识?
    1.shell-变量;
    2.shell-参数传递
    3.shell-流程控制;
    4.shell-函数;
    5.shell-输入输出;
    6.shell-文件读取;
    7.shell-结束指令;

    简单的交互

    demo.sh

    choose_environment() {
        # 重新选择
        reselect=${1}
        if [ $reselect == 0 ];then
            echo '请选择要操作的环境: '
        elif [ $$reselect == 1 ];then
            echo '请重新选择要操作的环境: '
    	fi
        echo '1.开发环境'
        echo '2.测试环境'
    	echo 'q.结束'
    	# 获取用户的输入
        read -p '请输入序号, 选择环境: ' -n 1 environmentnum
    	echo '\n'
    	# 这里注意,判断空必须加双引号,双引号识别为没有内容;主要处理没有输入指令直接回车
    	if [ -z "$environmentnum" ];then
    		choose_environment 0
        elif [ $environmentnum == 1 ];then
            echo '进入开发环境操作'
        elif [ $environmentnum == 2 ];then
            echo '进入测试环境操作'
    	elif [ $environmentnum == 'q' ];then
    		echo '欢迎再次使用'
    		# 结束脚本执行
    		exit 1
        else 
            echo '不支持的序号'
    		echo $environmentnum
    		choose_environment 1
        fi
    }
    
    choose_environment 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    上面部分代码写了注释:
    我们对上面用到的指令进行一一解释它的作用:

    1.reselect: 是接受传递进来的第一个参数的变量;通过 ${数字} 的语法去接受参数;
    2.if, elif, else, fi: 是流程控制指令;
    • [ $reselect == 0 ] 是用来做判断;在脚本中使用变量,要使用 $ 变量名的方式;
    • 判断语句必须和中括号之间存在一个空格;
    • == 是做值判断;
    • 分号是判断语句结束标志;
    • [ -z “$environmentnum” ] 这里的 -z 是判断变量值是否为空;
    • then 后面跟进入判断语句的执行内容;
    • fi 是流程控制语句的结束标志,在一个流程控制中必须存在,和 if 成对出现;
    3.echo一般是做内容输出到命令行;
    4.(read -p '请输入序号, 选择环境: ’ -n 1 environmentnum):
    • read 是用来读取用户在命令行的输入;
    • -p 后面跟的是提示文案;
    • -n 后面跟的是限定输入字符个数;
    • environmentnum 是用来接受用户在命令行输入的内容
    5.choose_environment
    • choose_environment(): 是定义的函数
    • choose_environment 0: 是调用函数代码,其中 0 是第一个传递参数的值;
  • 相关阅读:
    win10上修改docker的镜像文件存储位置
    领域驱动设计-领域建模
    python读取vivo手机截图,将满屏图片文件移动别的路径
    C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』
    Python爬虫零基础入门教程
    图像处理ASIC设计方法 笔记10 插值算法的流水线架构
    基本的查询语句
    案例精选|聚铭网络多产品联合部署为北京迎祥酒店建立信息安全屏障
    shell编程4-shell嵌套循环及随机数
    resetFields()报错
  • 原文地址:https://blog.csdn.net/q664243624/article/details/126408363