Script

作者: 深海蓝_98db | 来源:发表于2020-08-18 10:22 被阅读0次

一、概述

截屏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 查看环境变量

相关文章

网友评论

      本文标题:Script

      本文链接:https://www.haomeiwen.com/subject/peyhjktx.html