Files
kylin-nm/tests/runUnitTest.sh
2026-06-29 11:03:05 +08:00

53 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
export QT_QPA_PLATFORM=offscreen
export QT_LOGGING_RULES="qt.qpa.*=false"
export QT_FATAL_WARNINGS=0
cd "$(dirname "$0")" || exit 1
# 启用lastpipe解决子shell变量:隔离问题
shopt -s lastpipe
BASE_DIR=$(pwd)
# 检查依赖命令是否存在
if ! command -v file &> /dev/null; then
echo "错误:系统未安装 file 命令,无法识别二进制文件!" >&2
exit 1
fi
# 初始化计数器:仅统计「有执行权限+非.so/.a/.o后缀+二进制格式」的文件
binary_count=0
# 提示信息
echo "===== 开始递归扫描 ${BASE_DIR} 目录下有执行权限的二进制程序 ====="
echo
# 核心逻辑:递归查找所有文件,过滤规则:有执行权限 + 非.so/.a/.o后缀 + 二进制格式
find "${BASE_DIR}" -type f -print0 | while IFS= read -r -d $'\0' file; do
# 跳过符号链接(如需包含,注释此行)
if [ -L "${file}" ]; then
continue
fi
# 第一步:过滤后缀为.so/.a/.o的文件(直接跳过)
if [[ "${file}" =~ \.(so|a|o)$ ]]; then
continue
fi
# 第二步:判断是否有可执行权限(无则跳过)
if [ ! -x "${file}" ]; then
continue
fi
# 第三步:识别是否为二进制文件(过滤文本/脚本/空文件等)
if file -b "${file}" | grep -qiE 'elf|executable|binary' && \
file -b "${file}" | grep -qiEv 'text|ascii|script'; then
echo "=============运行程序:${file}=================="
"${file}"
echo "=============程序结束:${file}=================="
# 计数器+1(仅统计符合所有条件的文件)
((binary_count++))
fi
done
echo
# 检查计数器:无符合条件的文件则报错退出
if [ "${binary_count}" -eq 0 ]; then
echo "错误:在 ${BASE_DIR} 及其子目录中未扫描到有执行权限的二进制程序"
exit 2 # 非零退出码标识错误
else
echo "===== 脚本运行结束,共找到 ${binary_count} 个符合条件的二进制程序 ====="
exit 0
fi