Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Помогите с Bash  (Прочитано 977 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Помогите с Bash
« : 19 Апрель 2010, 08:05:36 »
В общем есть некий скрипт который предназначен только для
запуска на Debian подобных системах.
Как реализовать данный процесс распознания системы и если она не дебиан подобная то запуск скрипита остановить, с выдачей ошибки что-то вроде
У вас система не дебиан-подобная.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #1 : 19 Апрель 2010, 09:25:01 »
Варианты такие напрашиваются (как идеи).
1. Проанализируйте /var/cache/apt/archives
на наличие deb пакетов.
2. Подумать  на предмет характерных для debian программ (установщики deb).

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #2 : 19 Апрель 2010, 09:52:05 »
Пришло на ум только самое бональое =) не смеяться

#!/bin/bash
if (ls /var/cache/apt/archives/*.deb) then
    echo Deb system ok
    else
    echo No deb system BAD
    fi
:2funny:

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #3 : 19 Апрель 2010, 12:26:33 »
if [ ! -f /etc/debian_version ]; then
    echo "Debian-based system required"
    exit 1
fi
« Последнее редактирование: 21 Апрель 2010, 20:38:12 от Mam(O)n »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #4 : 21 Апрель 2010, 07:22:06 »
а почему бы не заюзать uname -a
« Последнее редактирование: 21 Апрель 2010, 07:25:40 от Владимир Николаевич »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #5 : 21 Апрель 2010, 08:32:16 »
al@ubuntu-desktop1:~$ uname -a
Linux ubuntu-desktop1 2.6.27-12-generic #1 SMP Thu Feb 5 09:26:42 UTC 2009 x86_64 GNU/Linux
al@ubuntu-desktop1:~$
Ну и где здесь сказано про deb ?

Оффлайн Frank

  • Старожил
  • *
  • Сообщений: 1799
  • Профессиональный любитель
    • Просмотр профиля
    • Народный форум Николаева
Re: Помогите с Bash
« Ответ #6 : 21 Апрель 2010, 08:40:55 »
case `lsb_release -i | awk -F':' '{ print $2 }'` in
Debian, Ubuntu) echo all OK
*) echo error: unknown system
esac
где-то так :)
« Последнее редактирование: 21 Апрель 2010, 08:44:08 от Frank »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #7 : 21 Апрель 2010, 08:45:16 »
al@ubuntu-desktop1:~$ lsb_release -i
Distributor ID:   Ubuntu
al@ubuntu-desktop1:~$
Это уже перелет. :idiot2:

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #8 : 21 Апрель 2010, 15:52:05 »
al@ubuntu-desktop1:~$ uname -a
Linux ubuntu-desktop1 2.6.27-12-generic #1 SMP Thu Feb 5 09:26:42 UTC 2009 x86_64 GNU/Linux
al@ubuntu-desktop1:~$
Ну и где здесь сказано про deb ?
вопрос распознать систему, а не deb пакеты
Как реализовать данный процесс распознания системы и если она не дебиан подобная то запуск скрипита остановить, с выдачей ошибки что-то вроде
У вас система не дебиан-подобная.
дальше только ваша фантазия
case `lsb_release -i | awk -F':' '{ print $2 }'` in
Debian, Ubuntu) echo all OK
*) echo error: unknown system
esac
где-то так :)
а по-моему красивый вариант
« Последнее редактирование: 21 Апрель 2010, 15:53:49 от Владимир Николаевич »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #9 : 21 Апрель 2010, 15:58:07 »
case `lsb_release -i | awk -F':' '{ print $2 }'` in
Debian, Ubuntu) echo all OK
*) echo error: unknown system
esac
где-то так :)
Это уже ближе к цели. ;D

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #10 : 21 Апрель 2010, 17:22:11 »
Тогда вот так.
lsb_release=`which lsb_release`
if [ -z $lsb_release ]  ; then
    echo error: unknown system
else
  case `lsb_release -i | awk -F':' '{ print $2 }'` in
    Debian, Ubuntu) echo all OK
    *) echo error: unknown system
  esac
fi

А то будет ругаться про command not found - неаккуратненько.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #11 : 21 Апрель 2010, 18:54:55 »
Кроме Ubuntu есть еще Debian'о образные системы. Такчто /etc/debian-version

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Помогите с Bash
« Ответ #12 : 21 Апрель 2010, 19:02:11 »
grep -i 'ubuntu\|debian\|...' /etc/issue || exit 1

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #13 : 21 Апрель 2010, 19:25:22 »
В общем есть некий скрипт который предназначен только для
запуска на Debian подобных системах.
Как реализовать данный процесс распознания системы и если она не дебиан подобная то запуск скрипита остановить, с выдачей ошибки что-то вроде
У вас система не дебиан-подобная.
А что именно требуется, что подобно дебиану?
Может, это и надо проверять?

А то предложенные варианты в основном спотолочные.
От /etc/issue и debian_version ничего не зависит.
lsb - это вообще Linux Standard Base, теоретически, любой современный дистрибутив должен иметь ее реализацию.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Помогите с Bash
« Ответ #14 : 21 Апрель 2010, 20:03:29 »
lsb - это вообще Linux Standard Base, теоретически, любой современный дистрибутив должен иметь ее реализацию.
Вот какраз в стандартной поставке Debian нет lsb_release и поддержка доставляется отдельным пакетом. А /etc/debian_version является чисто дебиановской меткой и все основанные на нём debian-совместимые дистрибутивы её должны иметь, что и нужно проверять ТС.

 

Страница сгенерирована за 0.07 секунд. Запросов: 24.