• 【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 是第一个传递参数的值;
  • 相关阅读:
    开源之夏经验分享|Dragonfly 社区 李从旺:社区贡献也是一种影响力
    c++11:新特性(1-10)
    c#调用webservice 示例
    使用Dependency Walker和dumpbin工具定位C++软件启动时找不到接口的报错问题
    9 二叉树的重建--来源于沈钰S同学(舒姐)
    MybatisPlus实用配置、DB策略配置、自动填充、逻辑删除、通用枚举。
    英语语音篇 - 元音自然拼读
    Yii缓存机制yii\caching\Cache
    天洑软件祝贺“星耀蓉城 篮能可贵”四城邀请赛暨西北工业大学校友篮球嘉年华活动圆满举办
    Pytorch实战教程(一)-神经网络与模型训练
  • 原文地址:https://blog.csdn.net/q664243624/article/details/126408363