这儿每天共享一个 iOS 的新知识,快来重视我吧

前言

Bash(或叫 shell)脚本是 Unix 和类 Unix 操作系统的一种常用脚本,提供了一种强壮的方法来自动履行重复性使命,如果能好好加以运用可以为咱们开发人员节省大量时间。

作为 iOS 开发人员,运用 Bash 脚本能够帮助履行各种重复性的使命,例如自动化构建过程、办理文件系统、运转测试或部署应用等等。

今天就来介绍一下。

编写和运转第一个 Bash 脚本

每个 Bash 脚本文件都以 #!/bin/bash 开头的。这主要是告知计算机运用哪种类型的代码解说器。

咱们新建一个名为 test.sh 的文件,用文本编辑器翻开,输入以下代码:

#!/bin/bash
echo "Hello world!"

要运转这个脚本文件,只需要在终端中输入这个文件的途径:

/你的途径/test.sh

首次运转你可能会看到一个报错:

zsh: permission denied: /你的途径/test.sh

这是由于它没有权限履行,先运转指令:

chmod +x /你的途径/test.sh

然后再次运转这个脚本,就会看到终端中打印出了 Hello world!,这样,你的第一个 Bash 脚本就完结了。

根本语法

咱们学习任何一种言语都要先学习其根本语法,下面是一些常用的 Bash 根底语法和示例:

  1. 解说器指令

前面也介绍过了,Bash 脚本通常以 #!/bin/bash 开端,表明运用 Bash 解说器来履行脚本。

  1. 注释:运用 # 开头的行表明注释,用于解说代码的作用和用途,不会被履行。
#!/bin/bash
#这是一个示例的Bash脚本
echo"Hello,World!"#打印Hello,World!
  1. 变量:运用变量来存储和引证数据。变量名不需要声明,直接赋值即可。
#!/bin/bash
name="John"
echo"Mynameis$name."#打印MynameisJohn.
  1. 输入输出:运用 echo 指令输出文本,运用 read 指令从用户处获取输入。
#!/bin/bash
echo"请输入你的姓名?"
readname
echo"你好,$name!"

这段代码会先输出 请输入你的姓名?,然后等候用户输入内容,输入完结后打印 你好, {输入的内容}!

  1. 条件句子:运用条件句子来进行条件判别和分支履行。
#!/bin/bash
echo"输入一个数字:"
readnum
if[$num-gt10];then
echo"输入的数字大于10."
else
echo"输入的数字不大于10."
fi

这儿的 -gt 是一个表达式,用来判别输入的数字是否大于 10,除了 -gt,Bash 还提供了其他一些常用的比较运算符:

  • -eq:等于(equal)

  • -ne:不等于(not equal)

  • -lt:小于(less than)

  • -le:小于等于(less than or equal)

  • -gt:大于(greater than)

  • -ge:大于等于(greater than or equal)

  1. 循环:运用循环结构来重复履行一段代码。
  • for 循环:用于遍历列表或规模。
#!/bin/bash
foriin12345
do
echo$i
done
  • while 循环:在给定条件为 true 时重复履行代码块。
#!/bin/bash
i=1
while[$i-le5]
do
echo$i
((i++))
done

函数语法

函数是一种可重复运用的代码块,用于履行特定使命。其实只要学会了上边的根本语法,你就能够自己写一些简略的脚本了,但是要想用好 Bash,还是要学函数。

  1. 界说函数:运用 function 关键字或直接运用函数名来界说函数都能够。函数体要由 {} 围住。
#!/bin/bash
#运用function关键字界说函数
functiongreet{
echo"Hello,World!"
}
#直接运用函数名界说函数
bye(){
echo"Goodbye!"
}
  1. 调用函数:运用函数名后跟一对 () 来调用函数。
#!/bin/bash
greet#调用greet函数
bye#调用bye函数
  1. 函数参数:函数能够接受参数,参数经过 $1$2$3 等方法引证。
#!/bin/bash
#界说带参数的函数
greet(){
echo"Hello,$1!"
}
#调用greet函数,并传递参数
greet"Alice"#输出Hello,Alice!
greet"Bob"#输出Hello,Bob!
  1. 回来值:函数能够运用 return 句子回来一个值。回来值经过 $? 来获取。
#!/bin/bash
#界说带回来值的函数
add(){
result=$(($1+$2))
return$result
}
#调用add函数,并获取回来值
add53
echo"成果为$?"#输出成果为8

脚本参数

在 Bash 脚本中,能够经过履行脚本时提供输入参数,以便脚本能够依据这些参数进行操作。

  1. 方位参数:方位参数是指在指令行上传递给脚本的参数。它们经过 $1$2$3 等方法引证,其间 $1 表明第一个方位参数,$2 表明第二个方位参数,以此类推。
#!/bin/bash
#获取方位参数并打印
echo"第一个参数为:$0"
echo"第二个参数为:$1"
echo"第三个参数为:$2"

履行脚本时,能够经过空格分隔的方法传递方位参数,第一个参数 $0 默以为脚本途径:

./Test.sh参数2参数3

终端将会输出:

第一个参数为: ./Test.sh
第二个参数为: 参数2
第三个参数为: 参数3
  1. 特别参数:Bash 还提供了一些特别的变量来引证脚本的参数。
  • $#:表明传递给脚本的参数个数。

  • $*:表明一切方位参数的列表。

  • $@:表明一切方位参数的列表,每个参数都被引证为一个独立的字符串。

  • $?:表明上一个指令的退出状况。

#!/bin/bash
#获取参数个数和参数列表
echo"参数个数:$#"
echo"参数分别为:$*"
#遍历并打印参数
forargin"$@";do
echo$arg
done
echo"上一个指令的退出状况:$?"
  1. 默认值:能够运用 ${变量:-默认值} 的形式,为脚本参数设置默认值。如果变量没有被设置或为空,则运用默认值。
#!/bin/bash
#运用默认值打印参数
name=${1:-"World"}
echo"Hello,$name!"

如果没有传递方位参数,则运用默认值 “World”。

$bashscript.sh
Hello,World!

写一个 iOS 开发相关的脚本

最后咱们运用上边学到的知识,写一个 iOS 项目自动打包的脚本:


#!/bin/bash
#界说变量
workspace="YourApp.xcworkspace"
scheme="YourScheme"
archivePath="YourArchivePath.xcarchive"
exportOptionsPlist="YourExportOptionsPlist.plist"
exportPath="YourExportPath"
#界说函数
installDependencies(){
echo"开端装置pod依赖..."
podinstall
echo"pod依赖装置完结"
}
buildIPA(){
echo"开端打包IPA..."
xcodebuildarchive-workspace$workspace-scheme$scheme-archivePath$archivePath
xcodebuild-exportArchive-archivePath$archivePath-exportOptionsPlist$exportOptionsPlist-exportPath$exportPath
echo"IPA打包完结"
}
openFolder(){
echo"翻开IPA文件夹..."
open$exportPath
}
#调用函数
installDependencies
buildIPA
openFolder
echo"脚本履行完结."

在这个脚本中,咱们先是装置 pod 依赖,然后开端打包 ipa,打包完结之后翻开 ipa 所在的文件夹。

学会了 Bash 脚本,你就能够用它来做很多重复性的事情,从而节省你宝贵的时间了。

这儿每天共享一个 iOS 的新知识,快来重视我吧

本文同步自微信大众号 “iOS新知”,每天准时共享一个新知识,这儿仅仅同步,想要及时学到就来重视我吧!