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


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

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

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

Оффлайн ulan44

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

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
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

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
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

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
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

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
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

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • 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.088 секунд. Запросов: 25.