shell脚本开多个线程编译当前路径下的AA

shell脚本开多个线程编译当前路径下的AA


```bash
# 获取当前目录下的所有文件夹
# folders=$(find . -maxdepth 1 -type d -name "*[![:space:]]*" | grep -vE "git|vscode")
folders=$(ls -d */)
# 遍历文件夹并输出
for folder in $folders
do
     # 判断是否为当前文件夹,删除.
    if [[ $folder != "." ]]; then
        echo $folder
    fi
done
# 输出文件夹列表供选择
echo "当前目录下的文件夹列表:"
echo "$folders"
# 用户输入选择
read -p "请输入要编译的文件夹名(输入all编译所有文件夹):" choices
# 判断选择并进行编译
if [[ $1 == "build" ]];then
function build_AAprocess(){
if [[ $choices == "all" ]]; then
    # 创建一个数组来存储线程ID
    pids=()
    for folder in $folders; do
        # 判断是否是文件夹,避免编译到其他类型的文件
        if [[ -d $folder ]]; then
            echo "开始编译文件夹:$folder"
            # 在新的线程中执行编译命令
            (build_process $folder/ -j) &
            # 将线程ID添加到数组中
            pids+=($!)
        fi
    done
    # 等待所有线程完成
    for pid in ${pids[*]}; do
        wait $pid
    done
else
    # 判断选择的文件夹是否存在
    if [[ -d $choices ]]; then
        echo "开始编译文件夹:$choices"
        # 执行编译命令
        build_process $choices/ -j
    else
        echo "选择的文件夹不存在"
    fi
fi
}
fi
# function scp_AA(){
#     expect << EOF
#  spawn scp -r ${studio_path}/$choices ${login}@${client_ip}:${DES_DIR}
#   expect {
# 	  "yes/no" {send "yes\r";exp_continue}
#   	"password:" {send "${PASSWD}\n\r"}
#     }
#   expect eof
# EOF
# }
function build_process(){
CURDIR=$(pwd)
PROCESS_NAME=$1
DEMOS_PATH=${CURDIR}/$1
TARGET_OS=custom
echo "###########prepare Build Process##########${PROCESS_NAME}..."
ara-cli Application --generate-cmake --target-os ${TARGET_OS} --target-platform qemu-arm64 --app ${DEMOS_PATH}
ara-cli RunPluget --name AraComBindingGenerator.pluget --application ${DEMOS_PATH}
ara-cli RunPluget --name AraComManifestGenerator.pluget --application ${DEMOS_PATH}
ara-cli RunPluget --name araEmManifestGen.pluget --application ${DEMOS_PATH}
ara-cli RunPluget --name araDltManifestGen.pluget --application ${DEMOS_PATH}
ara-cli Application --target-os ${TARGET_OS} --target-platform qemu-arm64 --app ${DEMOS_PATH}
echo "###########exit Build Process##########${PROCESS_NAME}..."
}
build_AAprocess $1
for folder in $folders; do
    # 删除除了指定文件夹以外的所有文件
    find . -maxdepth 1 -type f -not -path "$folder" -not -path "*.sh" -delete
done


find ./: 使用 find 命令从当前目录开始查找文件和文件夹。

-maxdepth 1: 限制查找的深度为1,即只在当前目录下查找,不包括子目录。

-type d: 指定只查找文件夹。

-name "*[![:space:]]*": 使用通配符匹配模式 * 查找所有非空字符命名的文件夹。[![:space:]] 表示不匹配空字符。

|: 管道符,将前一个命令的输出作为后一个命令的输入。

grep -vE "git|vscode": 使用 grep 命令对前一个命令的输出进行过滤。-v 参数表示只显示不匹配的行,-E 参数表示使用扩展正则表达式进行匹配。"git|vscode" 表示匹配包含 git 或 vscode 的行,然后过滤掉这些行。
综合起来,这个命令的作用是在当前目录下查找所有非空字符命名的文件夹,并排除包含 git 和 vscode 的文件夹。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值