а теперь критика)))
echo "Хотите ли вы добавить/обновить фоновое изображение загрузчика GRUB? Введите yes(y) или no(n)."
read -p "Введите ответ: " ans1
введите, введите. повторяемся)) что-нибудь одно оставь
cp *.tga /boot/grub/
cp 'Рабочий стол/*.tga' /boot/grub/
cp Загрузки/*.tga /boot/grub/
у меня нет папок "рабочий стол" и "загрузки". а еще у меня нет файлов *.tga. вывод - куча ругани на stdout. нужна проверка. хотя бы
if ls /path/*.tga ...
во-вторых, картинки в tga нифига почти не используются. джыпег поддерживается неполноценно, а вот в png должно быть предостаточно всего. вывод - ищем пнг, а джыпеги при выборе таковых конвертим в пнг с помощью imagemagick.
read -p "Введите название фонового изображения: " ans2
sed -i 's,.*WALLPAPER="/.*, WALLPAPER="/boot/grub/'$ans2'",' /etc/grub.d/05_debian_theme
нет проверки ввода. юзер напишет какую-нибудь чушь, она пойдет в конфиг, а потом гроб ругаться будет. спасет нас
if [ -s "/path/file" ] ....
read -p "Введите ответ: " ans3
ans1, ans2, ans3... я уже запутался. даже в скриптах "на один раз чисто для себя" давай переменным нормальные имена
echo " black - черный blue - синий brown - коричневый "
вместо пробелов, возможно, стоит заюзать табуляцию (\t)
echo "Из приведённых выше цветов выберите цвет обычного текста."
echo "Введите цвет обычного текста в следующем формате: {цвет_обычного_текста/цвет_фона_обычного_текста}. Вводится без фигурных скобок.
слишком сложно. без скобок, через слэш. разбивай на две части: цвет строки и бэкграунд.
+ слишком длинно. light-magenta, ага. вспомни fdisk. вот я бы сделал лучше варианты под номерами, а юзер пусть вводит только циферку
read -p "Введите цвета: " ans4
sed -i 's,.*COLOR_NORMAL=".*, COLOR_NORMAL="'$ans4'",' /etc/grub.d/05_debian_theme
опять же нет проверки. юзер напишет с ошибкой, а потом получит ругань и какой-нибудь дефолтный черный текст на фоне черной картинки
echo "1. Выберите один из вариантов и введите его номер, которым он идёт по счёту в списке в поле ввода. Нумерация начинается с нуля!"
об этом должен думать разработчик, а не юзер.
n=0; echo "$list" | while read ln ; do echo "${n}. $ln"; n=$[$n+1] ; done
например, так. а после того, как юезр вводит цифирь, в конфиг идет соответствующее название со всеми кавычками. само, без всяких
echo "Замечание: предпочтительнее второй способ так как если вы укажите вариант загрузки по умолчанию номером ....
об этом тоже не должен юзер париться
sed -i 's/.*GRUB_DEFAULT=.*/GRUB_DEFAULT='$ans7' '$ans8' '$ans9' '$ans10' '$ans11' '$ans12' '$ans13' '$ans14' '$ans15' '$ans16'/' /etc/default/grub
sed -i 's,.*GRUB_DEFAULT=.*,GRUB_DEFAULT='$ans7' '$ans8' '$ans9' '$ans10' '$ans11' '$ans12' '$ans13' '$ans14' '$ans15' '$ans16',' /etc/default/grub
что здесь происходит? зачем куча переменных? лично я ничего не понял((
sed -i '/GRUB_DEFAULT/s/ $//' /etc/default/grub
sed -i '/GRUB_DEFAULT/s/ $//' /etc/default/grub
......
sed -i '/GRUB_DEFAULT/s/ $//' /etc/default/grub
это что еще за нафиг?
echo "Переходим к следующему пункту."
sleep 3
else
echo "Идём дальше."
fi
используй отступы. уже в простейшей конструкции непонятно, где там надо искать if от этого else'а, а что будет дальше? а вообще советую писать в kate, там с этим просто (ctrl+i), ну или gedit хотя бы
echo "Введите время отображения меню GRUB в секундах."
read -p "Введите количество секунд: " ans18
sed -i 's,.*GRUB_TIMEOUT=.*,GRUB_TIMEOUT='$ans18',' /etc/default/grub
опять нет проверки. плюс стоит указать, что "-1" дает бесконечный таймаут.
if [ "$ans1" == "y" -o "$ans1" == "yes" ] || [ "$ans3" == "y" -o "$ans3" == "yes" ] || ....
шибко сложно. во-первых, стоило бы тогда заюзать цикл, а не перечисление. во-вторых, не проще ли будет в каждой секции добавить
changes_made=true
и в конце проверять всего одну переменную?
echo "Обновление GRUB"
update-grub
echo "Выход."
коли уж все так просто и интерактивно, юзеру не интересно созерцать вывод update-grub. а вот в случае неполадок логично его показать
output="$(update-grub 2>&1)"; exit_status="$?"
if [ "$exit_status" = "0" ] ; then
echo "ok"; exit 0
else
echo -e "не ok, выхлоп:\n$output" ; exit 1
fi
как-то так.
да, еще засунь в начало
if [ `whoami` != "root" ] ; then
echo "you must run this as root! use 'su' or 'sudo' and retry" >&2
exit 1
fi
вот. думай)))
да, полистай на досуге
http://sourceforge.net/projects/grub2rc/и изложи все это вместе с идеей в отдельной теме (наверно, в "программирование" или где оно уместнее), придумаем еще что-нибудь