#!/bin/bash # ... (action_merge_mkv и action_create_symlink без изменений) ... # Главная функция запуска обработки run_processing() { if ! logic_prepare_file_lists; then return 1; fi if [ ${#FILE_TRIPLETS[@]} -eq 0 ]; then ui_show_message "Запуск" "Нет файлов для обработки." return fi # Больше не спрашиваем, а используем CURRENT_ACTION local confirmation_text="Вы уверены, что хотите выполнить '${CURRENT_ACTION}' для ${#FILE_TRIPLETS[@]} файлов?\n\n" confirmation_text+="Результаты будут сохранены в:\n$OUTPUT_BASE_DIR" if ! ui_confirm "Финальное подтверждение" "$confirmation_text"; then ui_show_message "Отмена" "Операция отменена пользователем." return fi if [ ! -d "$OUTPUT_BASE_DIR" ]; then if ui_confirm "Создание каталога" "Каталог '$OUTPUT_BASE_DIR' не существует. Создать его?"; then mkdir -p "$OUTPUT_BASE_DIR" if [ $? -ne 0 ]; then ui_show_message "Ошибка" "Не удалось создать каталог."; return; fi else ui_show_message "Отмена" "Операция отменена."; return fi fi # Выполнение операции с прогресс-баром local total_files=${#FILE_TRIPLETS[@]} local current_file=0 ( for triplet in "${FILE_TRIPLETS[@]}"; do progress=$(( 100 * current_file / total_files )) echo "$progress" echo -e "XXX\n$((current_file + 1)) / $total_files\n$(basename "$triplet" | cut -f1 -d$'\t')\nXXX" IFS=$'\t' read -r video audio output <<< "$triplet" # Выполняем заранее выбранное действие case "$CURRENT_ACTION" in "MERGE") action_merge_mkv "$video" "$audio" "$output" ;; "SYMLINK") # Для симлинка аудио-файл не нужен action_create_symlink "$video" "$output" ;; esac ((current_file++)) done echo "100" echo -e "XXX\nГотово!\nНажмите Enter\nXXX"; sleep 2 ) | dialog "${DIALOG_OPTS[@]}" --title "Выполнение..." --gauge "Подготовка..." 10 70 0 clear }