shell Usage
Bash 脚本文件都以 #!/bin/bash 开头的
概述
- 终端创建脚本
touch WhatTheHell.sh
- 编辑文本内容(用文本编辑器打开)
#!/bin/bash
echo "Hello world!"
- 运行脚本
/你放置的文件夹路径/WhatTheHell.sh
- 首次运行你可能会看到一个报错
zsh: permission denied: /你放置的文件夹路径/WhatTheHell.sh
- 因为它没有权限执行,先运行命令
chmod +x /你放置的文件夹路径/WhatTheHell.sh
语法
Bash 脚本通常以 #!/bin/bash 开始,表示使用 Bash 解释器来执行脚本。
- 使用 # 开头的行表示注释,用于解释代码的作用和用途,不会被执行
#!/bin/bash
# 这是一个示例的 Bash 脚本
echo "Hello, World!" # 打印 Hello, World!
- 变量 (使用变量来存储和引用数据,变量名不需要声明,直接赋值即可)
#!/bin/bash
name="Hong"
echo "My name is $name." # 打印 My name is Hong.
- 输入 (使用 read 命令从用户处获取输入)
#!/bin/bash
echo "请输入验证码?"
read num
echo "你好, $num!"
- 条件语句
#!/bin/bash
echo "输入一个数字:"
read num
if [ $num -gt 100 ]; then
echo "输入的数字大于 100."
else
echo "输入的数字不大于 100."
fi
-gt 大于
-lt 小于
-eq 等于
-ne 不等于
-le 小于等于
-ge 大于等于
- for 循环:用于遍历列表或范围
#!/bin/bash
for key in 1 2 3 4 5
do
echo $key
done
- while 循环:为true时重复执行代码块
#!/bin/bash
key=100
while [ $key -ge 69 ]
do
echo $i
((key--))
done
- 函数
#!/bin/bash
# 使用 function 关键字定义函数
function openFlie {
echo "Hello, World!"
}
# 直接使用函数名定义函数
color() {
echo "is bulue!"
}
- 使用函数
#!/bin/bash
openFlie # 调用 openFlie 函数
color # 调用 color 函数
- 函数参数:函数可以接受参数,参数通过
2、$3 等方式引用
#!/bin/bash
# 定义带参数的函数
getUserName() {
echo "Hello, $1!"
}
# 调用 getUserName 函数,并传递参数
getUserName "Hong" # 输出 Hello, Hong!
getUserName "Lina" # 输出 Hello, Lina!
- 返回值:函数可以使用 return 语句返回一个值。返回值通过 $? 来获取
#!/bin/bash
# 定义带返回值的函数
add() {
total=$(( $1 + $2 ))
return $total
}
# 调用 add 函数,并获取返回值
add 100 666
echo "结果为 $?" # 输出 结果为 766
- 位置参数
位置参数是指在命令行上传递给脚本的参数。它们通过
2、
1 表示第一个位置参数,$2 表示第二个位置参数,以此类推
#!/bin/bash
# 获取位置参数并打印
echo "第一个参数为: $0"
echo "第二个参数为: $1"
echo "第三个参数为: $2"
- 执行脚本时,可以通过空格分隔的方式传递位置参数,第一个参数 $0 默认为脚本路径
./WhatTheHell.sh 参数2 参数3
- 终端将会输出:
第一个参数为: ./WhatTheHell.sh
第二个参数为: 参数2
第三个参数为: 参数3
- 特殊参数
$#:表示传递给脚本的参数个数。
$*:表示所有位置参数的列表。
$@:表示所有位置参数的列表,每个参数都被引用为一个独立的字符串。
$?:表示上一个命令的退出状态。
______________________________________
#!/bin/bash
# 获取参数个数和参数列表
echo "参数个数: $#"
echo "参数分别为: $*"
# 遍历并打印参数
for arg in "$@"; do
echo $arg
done
echo "上一个命令的退出状态: $?"
- 位置参数默认值:可以使用 ${变量:-默认值} 的形式,为脚本参数设置默认值。如果变量没有被设置或为空,则使用默认值
#!/bin/bash
# 使用默认值打印参数
name=${1:-"Hong"}
echo "Hello, $name!"
- 普及内容 (xcodebuild命令行实现iOS打包)
1.cd到你的工程目录下,对你的工程进行清理
xcodebuild clean -workspace xxx.xcworkspace -scheme debug -configuration release
// ** 如果你的项目利用pod安装过第三方库,那么就执行-workspace操作,否则就执行-project操作
2.执行生成xcarchive
xcodebuild archive -workspace xxx.xcworkspace -scheme release -archivePath YourPath.xcarchive
// ** YourPath 你要放置.xcarchive的路径
// ** 如果你的项目是xxx.xcodeproj,那么需要改掉workspace和scheme,命令如下
xcodebuild archive -project xxx.xcodeproj -target release -archivePath YourPath
3.执行生成ipa文件的操作
xcodebuild -exportArchive -archivePath YourPath -exportPath YourIpaPath -exportOptionPlist exportOption.plist
YourIpaPath就是你需要导出的ipa文件的路径,以.ipa文件结尾。exportOption.plist文件是需要你自己手动去配置的,里面包含了你的profile名字,teamID,bundleid等一些信息。当然,当你手动利用xcode进行打包时,也会生成这个plist文件。
- 创建一个iOS开发相关的脚本
#!/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 "脚本执行完成."
最后加点盐:
zsh & bash
要从 zsh 切换到 bash,你需要做的是更新你的默认 shell 到 bash。你可以通过在终端中运行以下命令来更改 shell:
当你下次登录时,你的默认 shell 将变为 bash
chsh -s /bin/bash
- 如果你只想临时从 zsh 切换到 bash(不更改默认 shell),你可以在终端中运行 bash 命令:
这将启动一个子 bash shell,你可以在其中运行 bash 命令,但当你退出这个会话时,你的当前 zsh 会话不会改变
bash
Thank...