这儿每天共享一个 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 根底语法和示例:
- 解说器指令
前面也介绍过了,Bash 脚本通常以 #!/bin/bash
开端,表明运用 Bash 解说器来履行脚本。
- 注释:运用
#
开头的行表明注释,用于解说代码的作用和用途,不会被履行。
#!/bin/bash
#这是一个示例的Bash脚本
echo"Hello,World!"#打印Hello,World!
- 变量:运用变量来存储和引证数据。变量名不需要声明,直接赋值即可。
#!/bin/bash
name="John"
echo"Mynameis$name."#打印MynameisJohn.
- 输入输出:运用
echo
指令输出文本,运用read
指令从用户处获取输入。
#!/bin/bash
echo"请输入你的姓名?"
readname
echo"你好,$name!"
这段代码会先输出 请输入你的姓名?
,然后等候用户输入内容,输入完结后打印 你好, {输入的内容}!
- 条件句子:运用条件句子来进行条件判别和分支履行。
#!/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)
- 循环:运用循环结构来重复履行一段代码。
-
for
循环:用于遍历列表或规模。
#!/bin/bash
foriin12345
do
echo$i
done
-
while
循环:在给定条件为 true 时重复履行代码块。
#!/bin/bash
i=1
while[$i-le5]
do
echo$i
((i++))
done
函数语法
函数是一种可重复运用的代码块,用于履行特定使命。其实只要学会了上边的根本语法,你就能够自己写一些简略的脚本了,但是要想用好 Bash,还是要学函数。
- 界说函数:运用
function
关键字或直接运用函数名来界说函数都能够。函数体要由{}
围住。
#!/bin/bash
#运用function关键字界说函数
functiongreet{
echo"Hello,World!"
}
#直接运用函数名界说函数
bye(){
echo"Goodbye!"
}
- 调用函数:运用函数名后跟一对
()
来调用函数。
#!/bin/bash
greet#调用greet函数
bye#调用bye函数
- 函数参数:函数能够接受参数,参数经过
$1
、$2
、$3
等方法引证。
#!/bin/bash
#界说带参数的函数
greet(){
echo"Hello,$1!"
}
#调用greet函数,并传递参数
greet"Alice"#输出Hello,Alice!
greet"Bob"#输出Hello,Bob!
- 回来值:函数能够运用
return
句子回来一个值。回来值经过$?
来获取。
#!/bin/bash
#界说带回来值的函数
add(){
result=$(($1+$2))
return$result
}
#调用add函数,并获取回来值
add53
echo"成果为$?"#输出成果为8
脚本参数
在 Bash 脚本中,能够经过履行脚本时提供输入参数,以便脚本能够依据这些参数进行操作。
- 方位参数:方位参数是指在指令行上传递给脚本的参数。它们经过
$1
、$2
、$3
等方法引证,其间$1
表明第一个方位参数,$2
表明第二个方位参数,以此类推。
#!/bin/bash
#获取方位参数并打印
echo"第一个参数为:$0"
echo"第二个参数为:$1"
echo"第三个参数为:$2"
履行脚本时,能够经过空格分隔的方法传递方位参数,第一个参数 $0 默以为脚本途径:
./Test.sh参数2参数3
终端将会输出:
第一个参数为: ./Test.sh
第二个参数为: 参数2
第三个参数为: 参数3
- 特别参数:Bash 还提供了一些特别的变量来引证脚本的参数。
-
$#
:表明传递给脚本的参数个数。 -
$*
:表明一切方位参数的列表。 -
$@
:表明一切方位参数的列表,每个参数都被引证为一个独立的字符串。 -
$?
:表明上一个指令的退出状况。
#!/bin/bash
#获取参数个数和参数列表
echo"参数个数:$#"
echo"参数分别为:$*"
#遍历并打印参数
forargin"$@";do
echo$arg
done
echo"上一个指令的退出状况:$?"
- 默认值:能够运用
${变量:-默认值}
的形式,为脚本参数设置默认值。如果变量没有被设置或为空,则运用默认值。
#!/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 的新知识,快来重视我吧