Автор Тема: Bash скрипт автоматической настройки wine для сборок ALT Linux  (Прочитано 4230 раз)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Накалякал скрипт, посмотрите кто хорошо понимает, я в этом новичок. Замечания, критика, предложения по улучшению.
#!/bin/bash
#
# Скрипт автоматической настройки wine для сборок ALT Linux.
# Лицензия GPL.
# Автор Koi <eg.evgeniy@gmail.com>
# Любой кто хочет помочь улучшить скрипт, присылайте свои идеи или предложения на почту.
# Так же предложения можно оставлять на форуме сообщества ALT Linux.
# http://forum.altlinux.org/index.php/topic,34671.0.html
#
# Диалог с пользователем "выбор начальных действий".
echo "Здравствуйте.
      Эта программа поможет настроить wine для работы с большинством приложений.
      Перед тем как начать настройку проверьте установленные пакеты wine.
Обнаруженные пакеты:"
echo "========"
rpm -qa |grep wine
echo "========"
echo "Вверху вы видите список пакетов, проверьте есть ли среди них:
wine-mono <---
libwine-vanilla-gl <---
      Если данных пакетов не установлено, отмените работу настройщика.
      Затем установите недостающие пакеты.
      Для запуска настройки нажмите «y», для выхода из программы «n»."
# Выбор действия "да\нет". Большая буква "Y" означает действие по умолчанию.
echo -n "Продолжить? (Y/n) "
read item
case "$item" in
    y|Y) echo "Ввели «y», устанавливаю библиотеки для wine..."
        ;;
    n|N) echo "Ввели «n», выход из программы, программа завершена."
exit
        ;;
    *) echo "Ничего не ввели. Выполняем действие по умолчанию..."
        ;;
esac
# Создание каталогов для msxml3 и mdac27.      
mkdir -p ~/.cache/winetricks/msxml3
mkdir -p ~/.cache/winetricks/mdac27
# Скачивание msxml3 и mdac27.
wget https://www.dropbox.com/s/4gaoezmuld05tk0/msxml3.msi
wget https://www.dropbox.com/s/68eardamsl1ju3l/mdac_typ.exe
# Перемещение в рабочий каталог
mv ~/msxml3.msi ~/.cache/winetricks/msxml3/
mv ~/mdac_typ.exe ~/.cache/winetricks/mdac27/
# Установка основных библиотек. Ключ "-q" означает авто ответ на все вопросы "да".
winetricks -q allfonts \
      d3dcompiler_43 \
      d3drm \
      d3dx10 \
      d3dx11_42 \
      d3dx11_43 \
      d3dx9_26 \
      d3dx9_28 \
      d3dx9_31 \
      d3dx9_35 \
      d3dx9_36 \
      d3dx9_39 \
      d3dx9_42 \
      d3dx9_43 \
      d3dx9 \
      d3dxof \
      dirac \
      msvcirt \
      quartz \
      riched20 \
      riched30 \
      devenum \
      dinput8 \
      dinput \
      directmusic \
      directplay \
      dmsynth \
      dpvoice \
      dsdmo \
      dsound \
      glut \
      msxml3 \
      msxml4 \
      msxml6 \
      vb2run \
      vb3run \
      vb4run \
      vb5run \
      vb6run \
      mdac27 \
      mdac28 \
      mfc40 \
      mfc42 \
      vcrun2003 \
      vcrun2005 \
      vcrun2008 \
      vcrun2012 \
      vcrun2013 \
      ie7
# Настройка реестра.
echo "========"
echo "Производится базовая настройка реестра."
winetricks --optout \
   multisampling=enabled \
   strictdrawordering=disabled \
   ddr=opengl \
   orm=fbo \
   psm=enabled \
   rtlm=auto \
   glsl=enabled \
   vsm=hardware \
   mwo=enabled
echo "========"
echo "Для настройки видеокарты нужно указать количество ее оперативной памяти.
     Введите число и нажмите «ENTER»:"
read RAM # Ввод текста пользователя.

# Проверка ввода.
if [ -z "$RAM" ]; then # Если не чего не ввели "-z" зеро то...
echo "Вы не указали количество видео памяти, значение будет установлено по умолчанию «128»."
echo -e "[HKEY_CURRENT_USER\Software\Wine\Direct3D]
\"VideoMemorySize\"=\"128\"

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
\"*winegstreamer\"=\"\"" > user.reg
chmod +x user.reg
# Запуск файла реестра и удаление его.
wine regedit user.reg
rm user.reg
fi
# Переменная пользовательского ввода.
echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
# Создание файла реестра.
echo -e "[HKEY_CURRENT_USER\Software\Wine\Direct3D]
\"VideoMemorySize\"=\""$RAM"\"

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
\"*winegstreamer\"=\"\"" > user.reg
chmod +x user.reg
# Запуск файла реестра и удаление его.
wine regedit user.reg
rm user.reg
echo "Настройка реестра закончена."
# Устранение падений разрешения.
xrandr -s 0
# Настройка wine.
echo "Установка закончена, проверьте установленные библиотеки и нажмите «Ок»."
winecfg
# Конец
exit

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Версию GPL надо указать. Оптимально 3.0. Далее: зачем перекладывать проверку установленного wine на пользователя, если можно самому проверить:
$ rpm -q --whatprovides wine-vanilla
i586-wine-vanilla-1.7.40-alt0.M70P.1
Далее, если вызываться не будут из скриптов RPM, то разумнее сразу предложить поставить:
wine="$(rpm -q --whatprovides winetricks --qf '%{name}')" # Определение имени пакета, предоставляющего winetricks
wine_gl="$(rpm -q "${wine/wine/libwine}-gl" --qf '%{name}')"
test -z "$wine_gl" && apt-get install "$wine_gl"
Ну и напоследок почитайте про in-place document в Bash:
cat > F << END
qqq
qq
END
« Последнее редактирование: 23.05.2015 23:18:50 от Skull »
Андрей Черепанов (cas@)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Версию GPL надо указать. Оптимально 3.0
Надо еще почитать чем они отличаются. ;-D
Далее: зачем перекладывать проверку установленного wine на пользователя, если можно самому проверить:
Была такая мысль, подумал будет путаница с версиями вайна.
Ну и напоследок почитайте про in-place document в Bash:
cat > F << END
qqq
qq
END
Почитаю спасибо.
У меня была забавная проблема с кавычками, не сразу понял в чем дело.
« Последнее редактирование: 24.05.2015 00:17:15 от Koi »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Была такая мысль, подумал будет путаница с версиями вайна.
Так писать надо так, чтобы не было мучительно больно чтобы поддерживало все варианты. Предложенная конструкция поддерживает и wine и wine-vanilla под обе архитектуры и arepo.
Андрей Черепанов (cas@)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Не знал, я еще плохо во всем разбираюсь.

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Объясните пожалуйста вот я выполняю:
wine="$(rpm -q --whatprovides winetricks --qf '%{name}')" # Определение имени пакета, предоставляющего winetricks
wine_gl="$(rpm -q "${wine/wine/libwine}-gl" --qf '%{name}')"
test -z "$wine_gl" && apt-get install "$wine_gl"
В ответ:
Цитировать
предупреждение: пакет i586-libwine-vanilla-gl не установлен
E: Запись в /var/cache/apt/ невозможна
E: Невозможно прочитать список пакетов или файл статуса.
Пытался по разному в скрипте рут прописать, в режим входит, а инстал отказывается, просто пустая строка. Установка идет если извратится и написать su -c "инстал *" тогда работает, но переменные не понимает.




Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
а с каких пор, у нас apt-get install  стал выполняться от обычного пользователя?

su -c "инстал *" тогда работает, но переменные не понимает.
У su должен быть минус :)
su - -c  "инстал *"

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
У su должен быть минус :)
Это да, опростоволосился, но все равно в su - -c "apt-get install" "$wine_g"" не хочет подставлять значения.
« Последнее редактирование: 24.05.2015 20:44:46 от Koi »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Переменную wine_g проверьте.
Андрей Черепанов (cas@)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
wine_g
Это опечатка, саму я пробовал по разному не хочет работать. Вернее внутри скрипта работает, а в инстал просто игнорируется. Решил для теста сделать простую переменную для wine-mono , так она пакет менеджером тоже игнорируется, а если в скрипте написать просто apt-ge install wine-mono тут же все нормально работает. Странные дела, пока выкинул эту секцию из скрипта до лучших времен. Щас в планах привести код в вменяемое состояние, а то я нагородил... Главное что работает.
Вот мой ужас:
#!/bin/bash
#
# Скрипт автоматической настройки wine для сборок ALT Linux.
# Лицензия GPL.
# Автор Koi <eg.evgeniy@gmail.com>
# Любой кто хочет помочь улучшить скрипт, присылайте свои идеи или предложения на почту.
# Так же предложения можно оставлять на форуме сообщества ALT Linux.
# http://forum.altlinux.org/index.php/topic,34671.0.html
#
# Диалог с пользователем "выбор начальных действий".
home1="/opt/wine-script/dll-install" # Возврат в dll-install.
games="/opt/wine-script/games/" # Папка игры.
prog="/opt/wine-script/progs/" # Папка программы.
ls1="ls /opt/wine-script/games" # Просмотр папки игры.
ls2="ls /opt/wine-script/progs" # Просмотр папки программы.
res="~/.wine/res/user.reg" # Резервная копия user.reg.
mkdir -p ~/.wine/res
clear # Очистка экрана терминала.
# Резервная копия user.reg.
if ! [ -f $res ]; then
echo "Создаю резервную копию файла настроек пользовательского реестра \
~/.wine/user.reg, он будет храниться в ~/.wine/res/"
cp ~/.wine/user.reg ~/.wine/res/
fi
# Меню настройки.
echo "Меню настройки «wine»:"
echo "Вы можете выбрать действие для продолжения установки:
    1. Настройка под игру ( список игр ) - нажмите цифру один
    2. Настройка программ ( софт ) - нажмите цифру два
    3. Общая настройка wine ( полная ) - нажмите цифру три
    4. Выход из программы ( закрыть ) - нажмите цифру четыре
    5. Восстановить настройки ( user.reg ) - нажмите цифру пять
Введите цифру для продолжения:"
read -p "Строка ввода:" cit # Ввод.
case "$cit" in
     1) echo "Ввели «1»
     Быстрая настройка игр.
     Выберете скрипт и запустите его в терминале:"
echo "========"
$ls1
echo "========"
echo "Для настройки игры дважды щелкните на файле и нажмите «ENTER». \
Для возврата в меню оставьте строку пустой."
read -p "Строка ввода:" start # Ввод.
if [ -z "$start" ]; then # Если не чего не ввели "-z" зеро то...
echo "Вы ничего не ввели. Возврат в меню выбора действий."
$home1
exit
fi
echo "Настраиваю игру:"
$games$start
echo "Настройка завершена, возврат в меню."
$home1
;;
      2) echo "Ввели «2»,
      Показываю список программ:"
echo "========"
$ls2
echo "========"
echo "Для настройки программы дважды щелкните на файле и нажмите «ENTER». \
Для возврата в меню оставьте строку пустой."
read -p "Строка ввода:" progs # Ввод.
if [ -z "$progs" ]; then # Если не чего не ввели "-z" зеро то...
echo "Вы ничего не ввели. Возврат в меню выбора действий."
$home1
exit
fi
echo "Настраиваю программу:"
$prog$progs
echo "Настройка завершена, возврат в меню."
$home1
        ;;
      3) echo "Ввели «3», устанавливаю библиотеки для wine...
========"
        ;;
      4) exit # Закрыть программу.
        ;;
      5) echo "Ввели «5», восстановление исходных настроек из резерва.
========
Настройки восстановлены.
В открывшемся окне перейдите на вкладку Библиотеки и проверьте настройки. \
Там должно быть пусто."
cp ~/.wine/res/user.reg ~/.wine/
winecfg
$home1
        ;;
      *) echo "Ничего не ввели. Возврат в меню выбора действий.
========"
$home1
        ;;
esac
# Создание каталогов для msxml3 и mdac27.      
mkdir -p ~/.cache/winetricks/msxml3
mkdir -p ~/.cache/winetricks/mdac27
dildybl="msxml3.msi" # Дубликат.
if [ -f $dildybl ]; then # Удаление дубликатов.
echo "Удаляю дубликаты."
rm msxml3.msi mdac_typ.exe wget-log wget-log.1
fi
# Скачивание msxml3 и mdac27.
wget https://www.dropbox.com/s/4gaoezmuld05tk0/msxml3.msi
wget https://www.dropbox.com/s/68eardamsl1ju3l/mdac_typ.exe
# Перемещение в рабочий каталог
mv ~/msxml3.msi ~/.cache/winetricks/msxml3/
mv ~/mdac_typ.exe ~/.cache/winetricks/mdac27/
# Установка основных библиотек. Ключ "-q" означает авто ответ на все вопросы "да".
winetricks -q allfonts \
      d3dcompiler_43 \
      d3drm \
      d3dx10 \
      d3dx11_42 \
      d3dx11_43 \
      d3dx9_26 \
      d3dx9_28 \
      d3dx9_31 \
      d3dx9_35 \
      d3dx9_36 \
      d3dx9_39 \
      d3dx9_42 \
      d3dx9_43 \
      d3dx9 \
      d3dxof \
      dirac \
      msvcirt \
      quartz \
      riched20 \
      riched30 \
      devenum \
      dinput8 \
      dinput \
      directmusic \
      directplay \
      dmsynth \
      dpvoice \
      dsdmo \
      dsound \
      glut \
      msxml3 \
      msxml4 \
      msxml6 \
      vb2run \
      vb3run \
      vb4run \
      vb5run \
      vb6run \
      mdac27 \
      mdac28 \
      mfc40 \
      mfc42 \
      vcrun2003 \
      vcrun2005 \
      vcrun2008 \
      vcrun2012 \
      vcrun2013 \
      ie7
# Настройка реестра.
echo "========"
echo "Производится базовая настройка реестра."
winetricks --optout \
   multisampling=enabled \
   strictdrawordering=disabled \
   ddr=opengl \
   orm=fbo \
   psm=enabled \
   rtlm=auto \
   glsl=enabled \
   vsm=hardware \
   mwo=enabled
echo "========"
echo "Для настройки видеокарты нужно указать количество ее оперативной памяти.
     Введите число и нажмите «ENTER»:"
read -p "Строка ввода:" RAM # Ввод текста пользователя.
# Проверка ввода.
case "$RAM" in
     128) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
     256) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
     512) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
    1024) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
    2048) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
    3072) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
    4096) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
    8192) echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как \
оперативная память вашей видеокарты."
       ;;
       *) echo "Вы неправильно указали количество видео памяти, значение будет \
установлено по умолчанию «128»."
cat > user.reg << END
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"VideoMemorySize"="128"

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"*winegstreamer"=""
END
chmod +x user.reg
# Запуск файла реестра и удаление его.
wine regedit user.reg
rm user.reg
echo "Настройка реестра закончена."
# Устранение падений разрешения.
xrandr -s 0
# Настройка wine.
echo "Установка закончена, проверьте установленные библиотеки и нажмите «Ок»."
winecfg
# Конец
exit
       ;;
esac
# Создание файла реестра.
cat > user.reg << END
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"VideoMemorySize"="$RAM"

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"*winegstreamer"=""
END
chmod +x user.reg
# Запуск файла реестра и удаление его.
wine regedit user.reg
rm user.reg
echo "Настройка реестра закончена."
# Устранение падений разрешения.
xrandr -s 0
# Настройка wine.
echo "Установка закончена, проверьте установленные библиотеки и нажмите «Ок»."
winecfg
# Конец
Настраивать wine стало гораздо удобнее, клацнул кнопку и готово.
Я теперь понимаю почему на виндовс двадцать лет ставят заплатки...
« Последнее редактирование: 25.05.2015 22:15:47 от Koi »

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Переделал код, а то каша была сам путаться начал.
. /opt/wine-script/variables
. /opt/wine-script/base
reserve(){
if ! [ -f "$wUSER" ];
  then
      echo "WINEPREFIX не обнаружен или создан с ошибкой."
      echo "Создаю чистый WINEPREFIX."
      echo "$PUS"
      echo "Создаю резервную копию файла user.reg."
          winecfg
          mkdir -p "$RES"
          cp "$wUSER" "$RES"
      echo "Резервный файл успешно создан и помещен в директорию "$HOME"/.wine/res"
      echo "$PUS"
  elif ! [ -f "$rUSER" ];
  then 
      echo "$PUS"
          mkdir -p "$RES"
          cp "$wUSER" "$RES"
      echo "Резервный файл успешно создан."
      echo "$PUS"
fi  
menu_user
}
msxml3(){
        msxml3=$HOME/.cache/winetricks/msxml3/msxml3.msi
        if ! [ -f "$msxml3" ];
          then
              mkdir -p $HOME/.cache/winetricks/msxml3
              wget -P $HOME/.cache/winetricks/msxml3/ https://www.dropbox.com/s/4gaoezmuld05tk0/msxml3.msi
        fi
}
mdac27(){
         mdac=$HOME/.cache/winetricks/mdac27/mdac_typ.exe
         if ! [ -f "$mdac" ];
           then
               mkdir -p $HOME/.cache/winetricks/mdac27
               wget -P $HOME/.cache/winetricks/mdac27/ https://www.dropbox.com/s/68eardamsl1ju3l/mdac_typ.exe
         fi
}     
memory(){
          echo "Для настройки видеокарты нужно указать количество ее оперативной памяти."
          echo "Введите число и нажмите «ENTER»."
          echo "Для возврата в меню нажмите «n»."
          echo "Если ввод окажется пуст выставится значение 128."
          read -p "Строка ввода:" RAM

              case "$RAM" in
                  128|256|512|512|1024|2048|3072|4096|8192)
                    echo "Вы ввели значение:«$RAM»,оно будет записано в реестр wine как оперативная память вашей видеокарты."
                    cat > user.reg << END
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"VideoMemorySize"="$RAM"

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"*winegstreamer"=""
END
                    chmod +x user.reg
                    wine regedit user.reg
                    rm user.reg
                    echo "Настройка реестра закончена."
                    xrandr -s 0
                    echo "Установка закончена, проверьте установленные библиотеки и нажмите «Ок»."
                    winecfg
                 ;;
                 n) echo "Возврат в меню."
                 menu_user
                 ;;
                 *) echo "Вы неправильно указали количество видео памяти, значение будет установлено по умолчанию «128»."
                    cat > user.reg << END
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"VideoMemorySize"="128"

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"*winegstreamer"=""
END
                    chmod +x user.reg
                    wine regedit user.reg
                    rm user.reg
                    echo "Настройка реестра закончена."
                    xrandr -s 0
                    echo "Установка закончена, проверьте установленные библиотеки и нажмите «Ок»."
                    echo "Возврат в меню настроек."
                    winecfg
                 ;;
             esac
}
menu_user(){
          clear
  echo "Меню настройки «wine»"
  echo "Вы можете выбрать действие для продолжения установки:"
  echo " 1. Настройка под игру ( список игр )             [1]"
  echo " 2. Настройка программ ( софт )                   [2]"
  echo " 3. Общая настройка wine ( полная )               [3]"
  echo " 4. Восстановить настройки ( user.reg )           [4]"
  echo " 5. Удалить WINEPREFIX=.wine ( удалить .wine )    [5]"
  echo " 6. Выход из программы ( закрыть )                [6]"
  echo "Введите цифру для продолжения:"
      read -p "Строка ввода:" MENU

  case "$MENU" in
      1) echo "Вы выбрали «1»"
echo "Быстрая настройка игр."
echo "Выберете скрипт и запустите его в терминале:"
echo "$PUS"
       $ILIST_GAME
echo "$PUS"
echo "Для настройки игры скопируйте ее имя в строку ввода и нажмите «ENTER»."
echo "Для возврата в меню оставьте строку пустой."
     read -p "Строка ввода:" GSTART

echo "Настраиваю игру:"
echo "$PUS"
       $GAME$GSTART
echo "$RETURN"
      menu_user
      ;;
      2) echo "Вы выбрали «2»"
echo "Показываю список программ:"
echo "Выберете скрипт и запустите его в терминале:"
echo "$PUS"
       $ILIST_PROG
echo "$PUS"
echo "Для настройки программы скопируйте ее имя в строку ввода и нажмите «ENTER»."
echo "Для возврата в меню оставьте строку пустой."
     read -p "Строка ввода:" PSTART

echo "Настраиваю программу:"
echo "$PUS"
       $PROG$PSTART
echo "$RETURN"
      menu_user
      ;;
      3) echo "Вы выбрали «3», устанавливаю библиотеки для wine..."
echo "$PUS"
     msxml3
     mdac27
     wine_settings
echo "$PUS"
                     memory
                 echo "$PUS"
     menu_user
      ;;
      4) echo "Вы выбрали «4», восстановление исходных настроек из резерва."
echo "Настройки восстановлены."
echo "В открывшемся окне перейдите на вкладку «Библиотеки» и проверьте настройки."
     cp "$rUSER" "$HOME"/.wine/
echo "$PUS"
     winecfg
      menu_user
      ;;
      5) echo "Вы выбрали «5», идёт удаление каталога «.wine»"
         echo "Это действие приведет к уничтожению всех данных и настроек «wine»."
         echo "Для создания нового WINEPREFIX запустите команду «winecfg» или перезапустите «dll-install» он сам создаст чистый WINEPREFIX."
         echo "Если вы хотите продолжить удаление нажмите «y», для отмены «n». Продолжить? (Y/n)"
             read -p "Строка ввода:" PREFIX
           
             case "$PREFIX" in
                 y|Y) echo "Вы выбрали «y», удаляю WINEPREFIX."
                      echo "После удаления программа «dll-install» сама создаст чистый WINEPREFIX."
                          if [ -d $WIN ];
                            then
                                        rm -rfv "$HOME"/.wine
                                    else
                                    echo "Директории нет, удалять нечего."
                                  fi
                              echo "$PUS"
                              echo "WINEPREFIX удален."
                              echo "Хотите создать новый чистый WINEPREFIX?"
                              echo "Если выберите «n» программа закроется."
                              echo "Пустой ввод вернет в меню выбора действий без создания  WINEPREFIX."
                              echo "Выберите действие: (y/N)"
                                  read -p "Строка ввода:" OPS
                                     
                                      case "$OPS" in
                                          y|Y) echo "Вы выбрали «y», создаю чистый WINEPREFIX."
                                               echo "$PUS"
                                               reserve
                                          ;;
                                          n|N) echo "Вы выбрали «n», закрыть программу."
                                          exit
                                          ;;
                                            *) echo "Ничего не ввели, переход в меню выбора действий."
                                          menu_user
                                          ;;
                                      esac
                                       ;;
                         n|N) echo "Вы выбрали «n», отмена действия и возврат в меню."
                         menu_user
                         ;;
                           *) echo "Ничего не ввели, возврат в меню."
                         menu_user
                         ;;
                     esac
                         ;;
               6) echo "Выход из программы"
               exit
               ;;
               *) echo "Ничего не ввели. Возврат в меню выбора действий."
               menu_user
               ;;
          esac
         
}
reserve
       menu_user
Кто может подсказать как сделать test множества переменных. Например надо проверить 7мь переменных с 0 отзывом.
Это можно сделать не плодя кучу секций теста на каждую переменную отдельно?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
test -n "$val1" -a -n "$val2" || fatal "Шеф, всё пропало..."
Андрей Черепанов (cas@)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Подскажете, есть ли команда показывающая количество видеопамяти у видеокарты, только не таким скопом как например lspci -v -s , а просто одной строкой цифру и все. Желательно чтоб команда не менялась в зависимости от производителя карты.

В общем понятно для каких целей, сделать чтоб скрипт сам определял память и вписывал куда надо. Через команду lspci -v -s достаточно сложный скрипт получается.

Или может есть другие более простые варианты?

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 999
Хм.. Попробуйте такой вариант на разном железе (самому интересно, будут ли затыки).
lspci -v | grep -i ', prefetchable) \[size=[1234567890]*M' | cut -f6 -d ' ' | sed 's/[^0-9]//g'UPD Немного сократил размер кода не в ущерб результату.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Код можно ужать в sed втрое.
Андрей Черепанов (cas@)