一、概述
截屏2020-11-08 上午10.17.37.png二、习作目的
文件SDK打包、Xcode Projects配置操作、自动化上传安装包(蒲公英&AppStore)
三、目标读者
Author;Interester;Requirement Implemention;
四、内容组成
- Shell
- Ruby
- ruby脚本修改Xcode项目引用(Xcodeproj)
- Application Scene
五、内容
5.1 Shell
编程语法
- 一个简单的shell程序
1. #!制定执行脚本的shell
2.#注释行
3.命令和控制结果
创建shell程序的步骤:
Step1:创建一个包含命令和控制结果的文件。
Step2:修改这个文件的权限使它可以执行。
使用chmod u+x
Step3:执行 ./example(也可以使用"sh example"执行)
- Shell变量
变量: 是shell传递数据的一种方式,用来代表每个取值的符号名。
Shell有两类变量:临时变量 和 永久变量
临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。永久变量是环境变量,其值不随shell脚本的执行结束而消失。
Eg:
1.查看当前用户的默认搜索路径(查看系统环境变量的PATH)
echo $PATH
2.查看当前支持的语言环境
echo $LANG #为空表示为英文
3.查看环境变量当前的SHELL
echo $SHELL
4.查看使用时当前的命令提示符
echo $PS1 #会显示用户名、主机名和当前的目录
- 用户自定义变量
用户定义的变量由字母或下划线开头,由字母、数字或下划线序列组成,并且大小写字母意义不同。变量名长度没有限制。
在使用变量值时,要在变量名前加上前缀"$"。
- 设置和使用变量
设置变量:习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。
变量赋值:赋值号''='两边没有空格'。
定义时赋值,如NUM=1
将一个命令的执行结果赋给变量,如:A=$B
使用echo命令查看变量值。例如:echo $A
列出所有的变量:
# set
包含多个字的变量:
$NAME=Mike Ron
运行时出错,应该为:
$NAME="Mike Ron"或$NAME='Mike Ron'
单引号和双引号的区别
# $ABC='$NAME Junior'
# echo $ABC
$NAME Junior
单引号之间的内容原封不动地指定给了变量。
删除变量:
# unset NAME
查看当前系统有哪些环境变量(永久变量)或自定义变量:
set | more
- 位置变量和特殊变量
Shell解释执行用户命令时,将命令行的第一个部分作为命令名,其它部分作为参数。由出现在命令行上的位置确定的参数称为位置参数。
例如:
ls -l file1 file2 file3
$0 这个程序的文件名 ls -l
$n 这个程序的第n个参数值,n=1-9
- 特殊变量
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个昌旭的PID
$! 执行上一个后台命令的PID
$? 执行上一个命令的返回值 #0或非0两种情况。如果为0表示命令执行成功;如果非0,表示这个命令执行的有问题
$!使用示例:
DATE='/bin/date +%Y%m%d'
/bin/tar -cf /backup/$1.$DATE.tar $1 > /dev/null 2>> /backup/$1.bak.log
/bin/gzip /backup/$1.$DATE.tar
if [$? -eq 0]
then
echo "$1 $DATE backup successfully" >> /backup/$1.bak.log
else
echo "ERRO:failure $1 $DATE backup!" >> /backup/$1.bak.log
fi
# crontab -e
# 0 3 * * 2,5 script
$*使用:
- Shell命令
read命令:
从键盘读入数据,赋给变量
如:read USERNAME
expr命令:
Shell变量的算数运算:
expr命令:对整数型变量进行算数运算
例如: expr 3 + 5
expr $var1 - 5
expr $var1 / $var2
expr $var3 \* 10 #乘法需要添加转意符
复杂的expr命令
复杂的运算:
expr 'expr 5 + 7' / $var4
将运算结果赋予变量:
var4='expr $var1/$bar2'
变量测试语句
变量测试语句:用于测试变量是否相等、是否为空、文件类型等。
格式:
test 测试条件
测试范围:整数、字符串、文件
注意:变量测试语句一般不单独使用,一般作为if语句的测试条件,如:
if test -d $1 then
...
fi
变量测试语句可用[]进行简化,如
test -d $1 等价于[-d $1]
测试
(1)字符串测试:
test str1=str2 #测试字符串是否相等
test str1!=str2 #测试字符串是否不相等
test str1 #测试字符串是否不为空
test -n str1 #测试字符串是否不为空
test -z str1 #测试字符串是否为空
(2)整数测试:
test int1 -eq int2 测试字符串是否相等
test int1 -ge int2 测试int1是否>=int2
test int1 -gt int2 测试int1是否>int2
test int1 -le int2 测试int1是否<=int2
test int1 -lt int2 测试int1是否<int2
test int1 -ne int2 测试整数是否不相等
(3)文件测试:
test -d file 指定文件是否目录
test -f file 指定文件是否常规文件
test -x file 指定文件是否可执行
test -r file 指定文件是否可读
test -w file 指定文件是否可写
test -a file 指定文件是否存在
test -s file 文件的大小是否非0
- 流程控制语句
(1)if语句
流控制语句:用于控制shell程序的流程
exit语句:退出程序执行,并返回一个返回码,返 回码为0表示正常退出,非0表示非正常退出。
例如:exit 0
(2)多个条件的联合:
-a:逻辑与,仅当两个条件都成立时,结果为真。
-o:逻辑或,两个条件只要有一个成立,结果为真。
(3)for...done语句
格式:for 变量 in 名字表
do
命令列表
done
- 函数
函数的定义:
函数名()
{
命令序列
}
函数的调用:不带()
函数名 参数1 参数2
函数中的变量:
变量均为全局变量,没有局部变量
函数中的参数:调用函数时,可以传递参数,在函数中用$1、$2...来引用
5.1.2 脚本调试
- sh -x script
这将执行该脚本并显示所有变量的值。
- sh -n script
- 不执行脚本只是检查语法的模式,将返回所有语法错误。
5.1.3 应用实例
备注:
1.Mac 查看环境变量
网友评论