#!/bin/sh

echo "Hello shell"

# ----------------------字符串---------------------#

readonly URL="定义一个常量:www.baidu.com"

your_name="jack"
echo $your_name
echo ${your_name}


for file in `ls ~/Desktop`; do
    echo "${file}"
done

echo $URL

your_name1='单引号字符串内部不能有变量,只能固定输出'
your_name2="单引号字符串可以有变量${URL},和转义符\"Hi,转义\""
echo $your_name1
echo $your_name2

echo "字符串长度:${#your_name}"
echo "子字符串,从1下标开始读3个字符:${your_name:1:3}"
echo `gexpr index "$your_name1" 固定` #语法错误
echo "使用#号可以截取指定字符(或者子字符串)右边的所有字符, *表示跨过左侧任意个字符:${your_name1#*固定}"
echo "使用%号可以截取指定字符(或者子字符串)左边的所有字符, *表示跨过右侧任意个字符:${your_name1%固定*}"

# ----------------------数组---------------------#

cities=("北京" "上海" "深圳" "杭州")
echo ${cities[1]}
echo ${cities[@]} #@:获取数组中所有的元素
echo ${!cities[@]} #![@]:获取数组中所有的元素的key键,数组可以放[key:value]对
echo "数组的长度:${#cities[@]}"

:<<EOF
多行注释:
定义一个函数EOF,但是没有地方调用,达到注释的效果
EOF

# ----------------------传递参数---------------------#
:<<EOF
$0: 执行文件名
$1: 第一个参数
$2: 第一个参数
.
.
EOF

echo "执行文件的名称为:$0,传参个数为:$#, 参数值为:$1,$2"


# ----------------------运算符执行---------------------#
#纯命令用``或$()执行
`xcodebuild -list -project aaa.xcodeproj`
#带参数用$()执行
$(ls $name)


# ----------------------循环遍历---------------------#
sortSchemeNames=(aaa bbb ccc)

projInfo=`xcodebuild -list -project aa.xcodeproj`
#目标字符串projInfo中,#*中间间隔任意个字符串直到查到“Schemes:”字符串,返回其右侧的部分
tragetSchemes=${projInfo#*Schemes:}

 for ((i=0; i<${#schemeNames[@]}; i++)); do
    scheme=schemeNames[i]
    # 父字符串$tragetSchemes 是否包含子字符串$scheme ?
    if [[ $tragetSchemes =~ $scheme ]]
    then
        echo "------------第${i}个库构建开始:${scheme}"
        
        echo "++++++++++++第${i}个库构建结束:${scheme} \n"
    fi
    
 done

for scheme in ${sortSchemeNames[@]}; do
    if [[ $tragetSchemes =~ $scheme ]]
    then
        echo "----------> build 开始:${scheme}"

        echo "<---------- build 结束:${scheme} \n"
    fi
done




# ----------------------路径截取---------------------#
:<<EOF

shell之文件路径截取
file=/dir1/dir2/dir3/my.file.txt
我们可以用${ }分别替换获得不同的值:
${file#*/}:拿掉第一条/及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条/及其左边的字串:my.file.txt
${file#*.}:拿掉第一个.及其左边的字串:file.txt
${file##*.}:拿掉最后一个.及其左边的字串:txt
${file%/*}:拿掉最后条/及其右边的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条/及其右边的字串:(空值)
${file%.*}:拿掉最后一个.及其右边的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个.及其右边的字串:/dir1/dir2/dir3/my
引用地址:http://www.jb51.net/article/94355.htm

EOF


# ----------------------xcodebuild构建实例---------------------#

# 产物默认目录下~/Library/Developer/Xcode/DerivedData/*
# -destination generic/platform=iOS \
# -destination generic/platform=iphonesimulator\

plateformDevice='generic/platform=iOS'
plateformSim='generic/platform=iphonesimulator'

# 1.获取工程下所有的schemes, 遍历构建所有子项目
# 假设脚本在工程的父级目录
projectName="aa.xcodeproj"
projectPath=$(find . -name $projectName)
projectPath=${projectPath%/*}
cd $projectPath

projInfo=$(xcodebuild -list -project $projectName)
targetSchemes=${projInfo#*Schemes:}

for ((i=0; i<${#sortSchemeNames[@]}; i++)); do
    scheme=${sortSchemeNames[i]}
    if [[ $targetSchemes =~ $scheme ]]
    then
        echo "------------构建开始:${scheme}"
        xcodebuild \
        -destination ${plateformDevice} \
        -workspace ${param1}.xcworkspace \
        -scheme ${scheme} \
        -configuration 'Debug'
        echo "++++++++++++构建结束:${scheme} \n"
    fi
done



# 2.真机,模拟器分别归档,并打.xcframework包
# 假设脚本在工程的当前目录
# 执行shell命令,查询当前目录下所有的*.xcodeproj文件
projPaths=$(find . -name *.xcodeproj)
projPath0=${projPaths[0]} # 获取第0个路径
projName=${projPath0##*/} # 获取xxx.xcproj工程名
onlyName=${projName%.*}   # 获取纯净的xxx工程名


xcodebuild archive \
    -scheme ${onlyName} \
    -sdk iphonesimulator \
    -archivePath "archives/ios_sim.xcarchive" \
    BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
    SKIP_INSTALL=NO



xcodebuild archive \
    -scheme ${onlyName} \
    -sdk iphoneos \
    -archivePath "archives/ios_device.xcarchive" \
    BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
    SKIP_INSTALL=NO



xcodebuild -create-xcframework \
    -framework archives/ios_device.xcarchive/Products/Library/Frameworks/${onlyName}.framework \
    -framework archives/ios_sim.xcarchive/Products/Library/Frameworks/${onlyName}.framework \
    -output build/${onlyName}.xcframework