57 lines
1.5 KiB
Bash
57 lines
1.5 KiB
Bash
#!/bin/bash
|
||
|
||
# Проверка аргументов
|
||
if [ "$#" -lt 2 ]; then
|
||
echo "Использование: $0 <кол-во задач> <номера задач...>"
|
||
exit 1
|
||
fi
|
||
|
||
count=$1
|
||
shift
|
||
tasks=("$@")
|
||
|
||
if [ "${#tasks[@]}" -ne "$count" ]; then
|
||
echo "Ошибка: количество задач не совпадает с указанным числом"
|
||
exit 1
|
||
fi
|
||
|
||
# Папка назначения
|
||
dest_dir="./dist/Krivoruchenko_SK"
|
||
mkdir -p "$dest_dir" || { echo "Не удалось создать $dest_dir"; exit 1; }
|
||
|
||
# Для отката, если что-то пойдёт не так
|
||
copied_files=()
|
||
|
||
cleanup_and_exit() {
|
||
echo "Ошибка: $1"
|
||
echo "Удаляю скопированные файлы..."
|
||
for file in "${copied_files[@]}"; do
|
||
rm -f "$file"
|
||
done
|
||
exit 1
|
||
}
|
||
|
||
# Проход по задачам
|
||
for num in "${tasks[@]}"; do
|
||
folder=$(printf "%02dEx" "$num")
|
||
if [ ! -d "$folder" ]; then
|
||
cleanup_and_exit "Папка $folder не найдена"
|
||
fi
|
||
|
||
for file in main.c solve.c solve.h; do
|
||
src="$folder/$file"
|
||
if [ ! -f "$src" ]; then
|
||
cleanup_and_exit "Файл $src не найден"
|
||
fi
|
||
|
||
base=$(basename "$file" .c)
|
||
ext="${file##*.}"
|
||
dest_file="$dest_dir/${base}_${folder:0:2}.$ext"
|
||
|
||
cp "$src" "$dest_file" || cleanup_and_exit "Ошибка копирования $src"
|
||
copied_files+=("$dest_file")
|
||
done
|
||
done
|
||
|
||
echo "Все файлы успешно скопированы в $dest_dir"
|
||
|