面向 iOS 开发的 Bash 脚本教程

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

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

作为 iOS 开发人员,使用 Bash 脚本可以帮助执行各种重复性的任务,例如自动化构建过程、管理文件系统、运行测试或部署应用等等。

今天就来介绍一下。

编写和运行第一个 Bash 脚本

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

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

bash 复制代码
#!/bin/bash
echo "Hello world!"

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

bash 复制代码
/你的路径/test.sh

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

javascript 复制代码
zsh: permission denied: /你的路径/test.sh

这是因为它没有权限执行,先运行命令:

bash 复制代码
chmod +x /你的路径/test.sh

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

基本语法

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

  1. 解释器指令

前面也介绍过了,Bash 脚本通常以 #!/bin/bash 开始,表示使用 Bash 解释器来执行脚本。

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

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

  1. 条件语句:使用条件语句来进行条件判断和分支执行。
bash 复制代码
#!/bin/bash
echo "输入一个数字:"
read num

if [ $num -gt 10 ]; 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 循环:用于遍历列表或范围。
bash 复制代码
#!/bin/bash
for i in 1 2 3 4 5
do
    echo $i
done
  • while 循环:在给定条件为 true 时重复执行代码块。
bash 复制代码
#!/bin/bash
i=1
while [ $i -le 5 ]
do
    echo $i
    ((i++))
done

函数语法

函数是一种可重复使用的代码块,用于执行特定任务。其实只要学会了上边的基本语法,你就可以自己写一些简单的脚本了,但是要想用好 Bash,还是要学函数。

  1. 定义函数:使用 function 关键字或直接使用函数名来定义函数都可以。函数体要由 {} 包围。
bash 复制代码
#!/bin/bash

# 使用 function 关键字定义函数
function greet {
    echo "Hello, World!"
}

# 直接使用函数名定义函数
bye() {
    echo "Goodbye!"
}
  1. 调用函数:使用函数名后跟一对 () 来调用函数。
bash 复制代码
#!/bin/bash

greet  # 调用 greet 函数
bye    # 调用 bye 函数
  1. 函数参数:函数可以接受参数,参数通过 $1$2$3 等方式引用。
bash 复制代码
#!/bin/bash

# 定义带参数的函数
greet() {
    echo "Hello, $1!"
}

# 调用 greet 函数,并传递参数
greet "Alice"  # 输出 Hello, Alice!
greet "Bob"    # 输出 Hello, Bob!
  1. 返回值:函数可以使用 return 语句返回一个值。返回值通过 $? 来获取。
bash 复制代码
#!/bin/bash

# 定义带返回值的函数
add() {
    result=$(( $1 + $2 ))
    return $result
}

# 调用 add 函数,并获取返回值
add 5 3
echo "结果为 $?"  # 输出 结果为 8

脚本参数

在 Bash 脚本中,可以通过执行脚本时提供输入参数,以便脚本可以根据这些参数进行操作。

  1. 位置参数:位置参数是指在命令行上传递给脚本的参数。它们通过 $1$2$3 等方式引用,其中 $1 表示第一个位置参数,$2 表示第二个位置参数,以此类推。
bash 复制代码
#!/bin/bash

# 获取位置参数并打印
echo "第一个参数为: $0"
echo "第二个参数为: $1"
echo "第三个参数为: $2"

执行脚本时,可以通过空格分隔的方式传递位置参数,第一个参数 $0 默认为脚本路径:

./Test.sh 参数2 参数3 

终端将会输出:

makefile 复制代码
第一个参数为: ./Test.sh
第二个参数为: 参数2
第三个参数为: 参数3
  1. 特殊参数:Bash 还提供了一些特殊的变量来引用脚本的参数。
  • $#:表示传递给脚本的参数个数。

  • $*:表示所有位置参数的列表。

  • $@:表示所有位置参数的列表,每个参数都被引用为一个独立的字符串。

  • $?:表示上一个命令的退出状态。

bash 复制代码
#!/bin/bash

# 获取参数个数和参数列表
echo "参数个数: $#"
echo "参数分别为: $*"

# 遍历并打印参数
for arg in "$@"; do
    echo $arg
done

echo "上一个命令的退出状态: $?"
  1. 默认值:可以使用 ${变量:-默认值} 的形式,为脚本参数设置默认值。如果变量没有被设置或为空,则使用默认值。
bash 复制代码
#!/bin/bash

# 使用默认值打印参数
name=${1:-"World"}
echo "Hello, $name!"

如果没有传递位置参数,则使用默认值 "World"。

php 复制代码
$ bash script.sh
Hello, World!

写一个 iOS 开发相关的脚本

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

bash 复制代码
#!/bin/bash

# 定义变量
workspace="YourApp.xcworkspace"
scheme="YourScheme"
archivePath="YourArchivePath.xcarchive"
exportOptionsPlist="YourExportOptionsPlist.plist"
exportPath="YourExportPath"

# 定义函数
installDependencies() {
  echo "开始安装 pod 依赖..."
  pod install
  echo "pod 依赖安装完成🍺"
}

buildIPA() {
  echo "开始打包 IPA..."
  xcodebuild archive -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新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
app开发工程师V帅11 小时前
iOS 苹果开发者账号: 查看和添加设备UUID 及设备数量
ios
CodeCreator181811 小时前
iOS AccentColor 和 Color Set
ios
iOS民工12 小时前
iOS keychain
ios
m0_7482389215 小时前
webgis入门实战案例——智慧校园
开发语言·ios·swift
Legendary_00819 小时前
LDR6020在iPad一体式键盘的创新应用
ios·计算机外设·ipad
/**书香门第*/1 天前
Laya ios接入goole广告,搭建环境 1
ios
wakangda1 天前
React Native 集成 iOS 原生功能
react native·ios·cocoa
Swift社区2 天前
Excel 列名称转换问题 Swift 解答
开发语言·excel·swift
crasowas2 天前
iOS - 超好用的隐私清单修复脚本(持续更新)
ios·app store
ii_best2 天前
ios按键精灵脚本开发:ios悬浮窗命令
ios