Shell Usage

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 函数
  • 函数参数:函数可以接受参数,参数通过 1、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
  • 位置参数

位置参数是指在命令行上传递给脚本的参数。它们通过 1、2、3 等方式引用,其中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...

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容