目前在做SDK方面的开发,公司流程比较追求自动化,追求效率,每发布版本提交到测试人员手中都力争自动化,一是避免人工打包出错,二是方便快捷。利用shell脚本通过Jenkins平台就可以实现这样的便利。这一篇文是自己这几天对shell的初步了解,此篇也是对自己踩的坑做个总结。
shell的基础语法(部分):
{
命名一个变量
变量名="xxxxx"
坑:习惯性的在等号两侧各加一个空格,导致出现commond not found 的错误,在shell中命名变量等号两侧切记不要留空格。
}
{
' ' 与`` 是不同的。
一开始看脚本的时候,由于把这两个符号看成一样的,导致看得比较懵逼。
' '单引号作用与""相似,有一些区别(自行google),都是与字符串相关的。
而``表示执行符号里边的命令,有些命令存在返回值可以赋值给变量。
}
{
压缩一个文件夹
推荐用以下方式:
cd "要压缩的文件夹的路径"
zip -r "包名.zip" ./*
}
{
脚本的函数一定要写在调用此函数的前面,传参很简单,跟在调用函数名后,函数实现中取参有点类似Swift中的一种方式,以下标的方式取到参数,个人觉得这个方式使脚本可读性较差。
还是举个栗子吧:
其中packageFramework(){xxxxxx},是定义的一个函数,
定义里边的$#表示这个函数接收到的参数的个数,第一个if判断-lt是指个数是否小于1 ,lt其实是less than 的首字母缩写(我猜的),$1指拿到第一个传进来的参数。
第二个if判断中,-a表示 左右两侧的条件都成立才判断才会为true,-a其实是and的缩写(我猜的),也可以用很多语言中通用的 &&代替,左边表示:传进的第一个参数不等于字符串debug,右边表示:穿进的第一个参数不等于字符串release。
packageFramework "xixixi" :此行为函数的调用,并传入参数 "xixixi"
下图为运行脚本的输出:
}
{
不百分百确定路径的时候不要轻易尝试运行 sed -i命令
不百分百确定路径的时候不要轻易尝试运行 sed -i命令
不百分百确定路径的时候不要轻易尝试运行 sed -i命令
这个命令会修改文件,一旦路径不正确修改了系统的文件或者你的工程文件,这个坑会有点难填。
}
要读懂一份shell脚本还需要查阅一些命令行大全,常用的以grep,sed这些命令开头的语句google之后都会有很全的介绍,个人认为用到的时候再去查询意思就好了。
PS:我编辑shell script所使用的编辑器为 CodeRunder,这个软件对很多语言都适用,想要调试一段代码块的时候很方便。