sysy/scripts/tasks.sh

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