45 lines
1.4 KiB
Bash
45 lines
1.4 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# 设置输入和输出目录
|
||
|
in_dir="in"
|
||
|
bin_dir="build"
|
||
|
out_dir="out"
|
||
|
lib_dir="lib"
|
||
|
|
||
|
rm -rf out
|
||
|
# 清空
|
||
|
echo "" > time.txt
|
||
|
|
||
|
# 确保输出目录存在
|
||
|
mkdir -p "$out_dir"
|
||
|
|
||
|
# 设置动态链接库路径
|
||
|
export LD_LIBRARY_PATH=./$lib_dir:$LD_LIBRARY_PATH
|
||
|
|
||
|
# 遍历build目录下的所有文件
|
||
|
for file in "$bin_dir"/*; do
|
||
|
# 检查文件是否存在
|
||
|
if [ -f "$file" ]; then
|
||
|
# 获取文件名(不含路径)
|
||
|
filename=$(basename -- "$file")
|
||
|
# 移除文件扩展名,假设输出的可执行文件不需要扩展名
|
||
|
basename="${filename%.*}"
|
||
|
# 记录开始运行的文件
|
||
|
echo "$file begin to run" >> time.txt
|
||
|
# 检查对应的输入文件是否存在
|
||
|
if [ -f "$in_dir/$basename.in" ]; then
|
||
|
# 如果输入文件存在,正常重定向输入输出
|
||
|
"$file" < "$in_dir/$basename.in" > "$out_dir/$basename.out" 2>> time.txt
|
||
|
else
|
||
|
# 如果输入文件不存在,执行文件但不重定向输入
|
||
|
"$file" > "$out_dir/$basename.out" 2>> time.txt
|
||
|
fi
|
||
|
# 捕获上一个命令的返回值
|
||
|
exit_code=$?
|
||
|
# 将返回值追加到输出文件的末尾
|
||
|
echo "$exit_code" >> "$out_dir/$basename.out"
|
||
|
# 分隔符,用于区分不同的运行结果
|
||
|
echo "---------- ---------- ---------- ----------" >> time.txt
|
||
|
fi
|
||
|
done
|