当前位置: 首页 > news >正文

已备案网站更换域名grace8WordPress主题

已备案网站更换域名,grace8WordPress主题,深圳网络设计公司,ckplayer 视频网站省流:shift关键字 探索思路 最近有一个小小的需求,写一个类似于docker run -a -b -c这样的脚本,这个脚本名为doline,它本身可以执行(doline -a -b -c),同时又带有几个如run、init、start这样的…

省流:shift关键字

探索思路

最近有一个小小的需求,写一个类似于docker run -a -b -c这样的脚本,这个脚本名为doline,它本身可以执行(doline -a -b -c),同时又带有几个如run、init、start这样的参数,感觉有点说不明白,以下是几种场景:

doline -a -b -c      # 直接传参使用
doline -h            # 查看帮助文档
doline init -a -b -c # 初始化一些参数,再次执行时可以不带初始化的参数
doline init -h       # 查看关于'init'的帮助文档
doline run -a -b -c  # ....

有多个类似于init、run这样的二级命令,我之前在【Shell 脚本传递参数的两种方式:位置传参与指令式传参】中详细介绍了Shell的两种传参方式,因此我基于这两种方式开始探索,并有了初步的想法(实操之后发现并不可以)。
首先使用最简单的位置传参,判断$1的值是不是init、run这样的参数,如果不是的话直接getopts如果是的话就在init下面再进行一次getopts,并且在init的结尾进行exit
伪代码大概如下:

## 如果是 doline init -a 123 -b 123 -c 123 就执行下面的代码
if [ $1 = 'init' ] ; thenwhile getopts ":a:b:c:h" optdocase $opt ina)....;;?)echo '未知参数';exit 1;;;esacdoneexit 0;
fi## 如果是 doline -a 123 -b 123 -c 123 就执行下面的代码
while getopts ":a:b:c:h" opt
docase $opt ina)....;;?)echo '未知参数';exit 1;;;esac
done

但是,实操之后失败了,如果是直接doline -a -b -c是可以的,但是doline init的话就全部执行失败,我在代码起始的位置输出所有的参数echo $*,参数是init -a -b -c,这样的话init也占了一个位置,后面的所有参数都对不上位置了,显然是不行的,但是逻辑上是可以的。

成功案例

这时候就要想办法,比如是否有其他的参数获取方式?或者如何在判断是init之后给init这个参数删除掉呢?经过一番查找,找到了一个十分关键的关键词shift切换。

shift 的原理:
如果你输入的参数是init -a -b -c,在读取init之后进行shift,参数列表就变为-a -b -c,这个时候就能对应上了。

这个时候只需要对上面的内容稍加改在,在判断第一个参数是init之后,立刻进行shift就可以了,更改后的脚本如下:

if [ $1 = 'init' ] ; thenshift; # 重读取过的$1之后开始判断命令while getopts ":a:b:c:h" optdocase $opt ina)....;;?)echo '未知参数';exit 1;;;esacdoneexit 0;
fi## 如果是 doline -a 123 -b 123 -c 123 就执行下面的代码
while getopts ":a:b:c:h" opt
docase $opt ina)....;;?)echo '未知参数';exit 1;;;esac
done

以上代码在判断第一个参数是init之后,会立刻进行shift,后面的内容就会一一对应起来了。

简单验证

写个简单的脚本,验证一下:

#!/bin/bashif [ $1 = 'init' ] ; then echo $* ;exit 0;
fiif [ $1 = 'run' ] ; thenshift; ## SHIFT 在这里echo $*;exit 0;
fi

期望输出:

执行./testShift init -a -b -c输出init -a -b -c
执行./testShift run -a -b -c输出-a -b -c

在这里插入图片描述
验证成功!!

参考

Tomcat 启动脚本

http://www.yayakq.cn/news/990053/

相关文章:

  • 浙江荣盛建设集团网站学技术的培训学校
  • 镇江网站建设活动方案西部数据网站备案流程
  • 网站icp备案信息是什么意思企业年报查询
  • 教育类的网站案例软件开发工时费一般是多少
  • 大连网站建设选高合科技宁波高新区做网站的公司
  • 网站建设金手指排名稳定暖暖 免费 视频 在线观看1
  • 柳州市网站建设公司遵化手机网站设计
  • 网站域名收费标准天猫网站做的比京东好
  • 自助建站系统官方版龙岩抖音seo搜索排名
  • dede做漫画网站的案例通辽市北京网站建设
  • 网站开发很难么云服务器使用教程
  • 交易猫钓鱼网站制作教学企业官网登录
  • 企业网站建设需要多少钱知乎无锡常规网络营销是什么
  • 南宁网站建设公司招聘珠海专业做网站的公司
  • 网站设置怎么删除wordpress登录的图片不显示
  • 概念产品设计网站网站架构的建设
  • 知名网站制作公司有哪些大鹏网站建设建站好不好
  • 做视频用的网站有哪些如何去做网络营销
  • 高端建站设计一个主机 多个网站
  • 学校微网站模板下载会计专业的简历制作
  • 网站建设域名的选取有讲究建设网站的公司swot
  • 河北做网站的公司公众号开发商咨询电话
  • 建立个人网站网站开发工具及框架介绍
  • wordpress入站密码页面设计存在的问题
  • 南宁制作网站西班牙语网站建设
  • 实验室网站建设视频制作的详细步骤
  • 常用网站开发软件6廊坊做网站费用
  • 制作网站开发项目的方案书sem推广方案怎么写
  • 销售网站内容设计方案wordpress与微信连接数据库
  • 网站常用后台路径上海餐饮网站建设