СисПрог Курсова (2). Міністерство освіти, науки, молоді І спорту україни одеський національний політехнічний університет
Скачать 1.09 Mb.
|
|
Варіант | Тип файлу |
2 | Файл-каталог |
Назви файлів отримати з текстового файлу, створеного з таблиці 1.1.2 у відповідності до варіанту:
Таблиця 1.1.2
Каталог повинен містити один текстовий файл із назвою каталогу.
Скрипт повинен мати параметр командного рядка з назвою каталогу, в якому будуть розміщені файли.
Виконання:
Створимо скрипт, який створює папки, із застосуванням псевдографічого інтерфейсу (1.sh):
#!/bin/bash
#Дозволяємо зчитування пробілів
IFS=$'\n'
#Отримуємо вхідний параметр із ім'ям файлу
inp_file=$1
#Перевірка існування даного файлу
if [[ ! -f $inp_file ]]; then
dialog --msgbox "Вхідний файл "${inp_file}" не знайдено!" 0 0
exit -1
fi
#Зчитуємо в масив імена каталогів із вхідного файлу
readarray a_dirnames < $inp_file
#Отримуємо кількість імен каталогів
dirs_cnt=${#a_dirnames[@]}
#Запускаємо цикл та індикатор прогресу
(
for (( i=0; i < dirs_cnt; i++ )); do
#Відкривальна мітка для індикатору прогреса
echo "XXX"
#Обчислення й виведення прогресу у відсотках
awk "BEGIN {printf \"%0.f\n\", 100*$((i+1))/$dirs_cnt}"
#Витягування назви каталогу з масиву та відсікання зайвих
#пробілів, що можуть бути на кінці та початку
dirname=$(echo ${a_dirnames[i]} | awk '{$1=$1};1')
#Створення повідомлення для індикатору прогреса
msg="Створення \"$dirname\"..."
#Перевірка існування даного каталогу
if [[ -d dirs/$dirname ]]; then
#Оновлюємо повідомлення
msg="${msg}\nТакий каталог вже існує!"
else
#Створюємо каталог в папці 'dirs' за допомогою mkdir
#Виводимо всі повідомлення про помилки в окремий файл
mkdir -p dirs/$dirname 2> errors.txt
#Перевірка успішності команди
if [[ ! $? -eq 0 ]]; then
#Оновлюємо повідомлення
msg="${msg}\nКоманду "mkdir" виконано з помилками!"
else
#Оновлюємо повідомлення
msg="${msg}\nКаталог успішно створено."
#Записуємо текстовий файл із ім'ям каталогу
echo $dirname > "dirs/$dirname/name.txt"
fi
fi
#Виводимо наше повідомлення на індикатор
echo -e $msg
#Завершальна мітка для індикатору прогреса
echo "XXX"
#Затримка ходу програми (0.5 сек.)
sleep 0.5
done
) | dialog --title "Створення каталогів..." --gauge "Почекайте..." 10 65 0 clear
Запускаємо скрипт:
d_gergel@dell:/sp_cwork$ ./1.sh activities
Переглядаємо список створених каталогів:
Перегляд файлу name.txt (містить ім’я каталогу, в якому він знаходиться):
Етап 1.2. Створення діалогового інтерфейсу користувача