Автор Тема: BASH въпрос  (Прочетена 7945 пъти)

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #30 -: Dec 02, 2010, 14:05 »
Още едно въпрос:

Значи определям процесорната архитектура в инсталатора.. Та мисълта ми е има ли начин да опиша в скрипта преди да започне инсталация да провери "uname -m" и ако е различно от зададената архитектура да прекъсне инсталацията. В конкретния случай правя за 64 битова инсталация
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: BASH въпрос
« Отговор #31 -: Dec 02, 2010, 14:11 »
Ако uname -m за всички 64-битови връща x86_64:
Код
GeSHi (Bash):
  1. [ `uname -m` != 'x86_64' ] && exit 1
(или разписано с if, ама ме мързи да пиша).
Активен

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #32 -: Dec 02, 2010, 14:28 »
Ако uname -m за всички 64-битови връща x86_64:
Код
GeSHi (Bash):
  1. [ `uname -m` != 'x86_64' ] && exit 1
(или разписано с if, ама ме мързи да пиша).

хм нещо се дъни :)


Този скрипт е предназначен за инсталиране на Gentoo Linux от вече съществуващ Линукс (Например Mandriva Sabayon Calculate Toorox Ubuntu). Необходимо е да имате някоя от тези или друга дистрибуция както и интернет връзка.
Единствено трябва да сте търпеливи (Поне тези които сте с по стар хардуер)
Автор ROKO__ (Росен Александров - sandikata@yandex.ru)
Важно! Тази инсталация е за 64 бита. Трябва да имате съответния хардуер.
bash: [: !==: очаква се бинарен оператор
bash: [: !==: очаква се бинарен оператор
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: BASH въпрос
« Отговор #33 -: Dec 02, 2010, 14:37 »
@shoshon, @romeo_ninov: първо да кажа, че с този пост целя само да се заяждам с вас двамцата. Еми господа "RTFM" - ако това в tldp.org не е RTFM кое е тогава??? А така като гледам примера свавняват стринга "foo" със стринга "foo" с едно просто равно не с -eq...
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: BASH въпрос
« Отговор #34 -: Dec 02, 2010, 14:47 »
bash: [: !==: очаква се бинарен оператор
Аз не виждам !== в
Код
GeSHi (Bash):
  1. [ `uname -m` != 'x86_64' ]
Активен

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #35 -: Dec 02, 2010, 15:49 »
bash: [: !==: очаква се бинарен оператор
Аз не виждам !== в
Код
GeSHi (Bash):
  1. [ `uname -m` != 'x86_64' ]

Смотри..

http://www.extremebg.co.cc/images/shet.png
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: BASH въпрос
« Отговор #36 -: Dec 02, 2010, 15:59 »
bash: [: !==: очаква се бинарен оператор
Аз не виждам !== в
Код
GeSHi (Bash):
  1. [ `uname -m` != 'x86_64' ]

Смотри..

http://www.extremebg.co.cc/images/shet.png

Роко... аз какво съм ти написала, във файла ти какво пише???
Прегледай си пак тоя 23 ред на кода и много внимателно прочети какво си написал... Ако не можеш да осъзнаеш, пейстни го тук, за да ти обясним какво правиш...

ПС. Разбираш ли какво прави
Код
GeSHi (Bash):
  1. [ `uname -m` != 'x86_64' ] && exit 1
Активен

tyuio

  • Напреднали
  • *****
  • Публикации: 145
    • Профил
Re: BASH въпрос
« Отговор #37 -: Dec 02, 2010, 16:06 »
//офф
Роко, то е ясно че никакви програмни езици не щпрехаш, ама барем български не говориш ли?
Активен

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #38 -: Dec 02, 2010, 16:10 »
Добре сега ще покажа идеята...

if [[ $(uname -m) == "x86_64" ]]; then printf "\e[0;32mПроцесорът ви поддържа x64"; else printf "\e[0;31mПроцесорът ви не поддържа x64"; fi

Това е въпросния ред.. Работи но искам да го направя когато не съответства архитектурата да прекъсва инсталацията ^^ добавях exit 1 след скобите но се получават грешки и нещо не мога да го разбера как трябва да стане
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

tyuio

  • Напреднали
  • *****
  • Публикации: 145
    • Профил
Re: BASH въпрос
« Отговор #39 -: Dec 02, 2010, 16:18 »
а нямали да ни кажеш как точно го слагаш тоя изход, или какви грешки дава?
Активен

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #40 -: Dec 02, 2010, 16:19 »
Не гледаш ли на снимката какво се получава ?
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: BASH въпрос
« Отговор #41 -: Dec 02, 2010, 16:23 »
Добре сега ще покажа идеята...

if [[ $(uname -m) == "x86_64" ]]; then printf "\e[0;32mПроцесорът ви поддържа x64"; else printf "\e[0;31mПроцесорът ви не поддържа x64"; fi

Това е въпросния ред.. Работи но искам да го направя когато не съответства архитектурата да прекъсва инсталацията ^^ добавях exit 1 след скобите но се получават грешки и нещо не мога да го разбера как трябва да стане

Вариант 1
Код
GeSHi (Bash):
  1. if [[ $(uname -m) == "x86_64" ]] #щом искаш да ползваш [[ ]] варианта
  2. then
  3. printf "Процесорът ви поддържа x64" #или каквото искаш там
  4. else
  5. printf "Процесорът ви не поддържа x64"
  6. exit 1 # излизаме от скрипта с код на завършване, означаващ неуспех
  7. fi
  8.  
  9.  


Вариант 2
Код
GeSHi (Bash):
  1. if [[ $(uname -m) != "x86_64" ]] #щом искаш да ползваш [[ ]] варианта
  2. then
  3. printf "Процесорът ви не поддържа x64" #или каквото искаш там
  4. exit 1 # излизаме от скрипта с код на завършване, означаващ неуспех
  5. else
  6. printf "Процесорът ви поддържа x64"
  7. fi
  8.  
  9.  

Вариант 3
Код
GeSHi (Bash):
  1. [[ $(uname -m) != "x86_64" ]] && printf "Процесорът ви не поддържа x64" && exit 1
  2. printf "Процесорът ви поддържа x64"
  3.  


Не гледаш ли на снимката какво се получава ?
Това на снимката е от
Код
GeSHi (Bash):
  1. if [[ $(uname -m) == "x86_64" ] && exit 1 ]
което си е синтактично неправилно.
« Последна редакция: Dec 02, 2010, 16:25 от bop_bop_mara »
Активен

tyuio

  • Напреднали
  • *****
  • Публикации: 145
    • Профил
Re: BASH въпрос
« Отговор #42 -: Dec 02, 2010, 16:25 »
а що изход е в тия скоби? изкарай го след показването на текста!
Опааа, марчето ме изпреварила :)
Активен

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #43 -: Dec 02, 2010, 16:29 »
а що изход е в тия скоби? изкарай го след показването на текста!
Опааа, марчето ме изпреварила :)

Ако е грешно значи и документацията на bash  е грешна от там гледам за примери
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: BASH въпрос
« Отговор #44 -: Dec 02, 2010, 16:31 »
http://www.extremebg.co.cc/images/work.png

Така се получи... Ето и целия код (има малки въпросителни още но мисля че и за тях има решение)


#!/bin/bash
# Инсталатор за Gentoo Linux
# Автор: Росен Александров - sandikata@yandex.ru
# Лиценз: Свободен (По желание на потребителя може да почерпи с кашонче бира :)

# Проверка за администраторски права
if [ `id -u` != "0" ]; then
echo "Добре дошли в инсталатора на Gentoo Linux"
echo "За да изпълните този скрипт ви трябва root."
echo "Моля стартирайте скрипта като root."
fi

echo
echo
echo
printf "\e[1;37mТози скрипт е предназначен за инсталиране на Gentoo Linux от вече съществуващ Линукс (Например Mandriva Sabayon Calculate Toorox Ubuntu). Необходимо е да имате някоя от тези или друга дистрибуция както и интернет връзка.\n"
printf "\e[1;37mЕдинствено трябва да сте търпеливи (Поне тези които сте с по стар хардуер)\n"
printf "\e[1;37mАвтор ROKO__ (Росен Александров - sandikata@yandex.ru)\n"
printf "\e[1;37mВажно! Тази инсталация е за 64 бита. Трябва да имате съответния хардуер.\n"

echo
echo
#if [[ $(uname -m) == "x86_64" ]]; then printf "\e[0;32mПроцесорът ви поддържа x64"; else printf "\e[0;31mПроцесорът ви не поддържа x64"; fi

[[ $(uname -m) != "x86_64" ]] && printf "\e[0;31mПроцесорът ви не поддържа x64\n" && exit 1
printf "\e[0;32mПроцесорът ви поддържа x64\n"

echo "За да продължите с инсталацита натиснете произволен бутон"
read key

echo "Изберете дял за root (/)"
echo "Например : /dev/sda1"
read BOOTPART
echo "Изберете дял за SWAP (Допълнителна виртуална памет)"
read SWAP

mkswap $SWAP
swapon $SWAP

echo
echo "Изберете файлова система .. Например reiserfs, ext4"
read fs
if [ "$fs" == reiserfs ]
then
mkfs.reiserfs $BOOTPART
else
mkfs.ext4 $BOOTPART
fi

mkdir /mnt/gentoo
mount $BOOTPART /mnt/gentoo

cd /mnt/gentoo

echo "Изтегляне на Stage3 файл..."
echo "Изберете сървър...(1-4)"
echo "1-  САЩ"
echo "2 - България"
echo "3 - Германия"
echo "4 - Холандия"
echo
echo "Pick number:"
read LOC

if [ $LOC -eq 1 ]
then
echo "Изтегляне на Stage 3..."
wget http://distfiles.gentoo.org/releases/amd64/current-stage3/http://distfiles.gentoo.org/releases/amd64/current-stage3/stage3-amd64-20101021.tar.bz2

elif [ $LOC -eq 2 ]
then
echo "Изтегляне на Stage 3..."
wget ftp://ftp.gentoo.bg/releases/amd64/current-stage3/http://distfiles.gentoo.org/releases/amd64/current-stage3/stage3-amd64-20101021.tar.bz2

elif [ $LOC -eq 3 ]
then
echo "Изтегляне на Stage 3..."
wget http://mirror.netcologne.de/gentoo/releases/amd64/current-stage3/http://distfiles.gentoo.org/releases/amd64/current-stage3/stage3-amd64-20101021.tar.bz2

elif [ $LOC -eq 4 ]
then
echo "Изтегляне на Stage 3..."
wget http://gentoo.tiscali.nl/releases/amd64/current-stage3/http://distfiles.gentoo.org/releases/amd64/current-stage3/stage3-amd64-20101021.tar.bz2
else
echo "Изберете бутон от (1-4)!"
echo "Downloading Stage 3 from default..."
wget http://darkstar.ist.utl.pt/gentoo/releases/amd64/current-stage3/stage3-amd64-20100408.tar.bz2
fi

echo "Изтегляне на Portage..."
echo "Изберете сървър...(1-4)"
echo "1-  САЩ"
echo "2 - България"
echo "3 - Германия"
echo "4 - Холандия"
echo
echo "Изберете бутон (1-4)!"
read LOC

if [ $LOC -eq 1 ]
then
echo "Изтегляне на Portage..."
wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2

elif [ $LOC -eq 2 ]
then
echo "Изтегляне на Portage..."
wget ftp://ftp.gentoo.bg/snapshots/portage-latest.tar.bz2

elif [ $LOC -eq 3 ]
then
echo "Изтегляне на Portage..."
wget http://mirror.netcologne.de/gentoo/releases/amd64/current-stage3/stage3-amd64-20100408.tar.bz2

elif [ $LOC -eq 4 ]
then
echo "Изтегляне на Portage..."
wget http://gentoo.tiscali.nl/snapshots/portage-latest.tar.bz2
else
echo "You have to pick a number between (1-4)!"
echo "Downloading Portage from default..."
wget http://darkstar.ist.utl.pt/gentoo/snapshots/portage-latest.tar.bz2
fi

#Unpacks Stage3 tar file
clear
echo
echo "Stage3 е изтеглен"
echo "Portage е изтеглен"
echo "Разархивирам Stage3 и Portage..."

tar xjpf stage3*
tar xjf portage-latest.tar.bz2 -C /mnt/gentoo/usr

echo "Готово!"
echo

#Copies DNS information
echo "Копирам DNS"
cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

#Mounts Proc filesystem
echo "Монтирам proc и dev файлови системи"
mount -t proc proc /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
echo "За да продължите инсталацията ви трябва Chroot скрипт. Можете да го изтеглите от тук -> http://extremebg.co.cc/gentoo/Chroot"
#Chroots into new Enviroment"
echo "Вход в новата система"

chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 9416 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 4929 Последна публикация Jun 11, 2005, 19:12
от tuxi
Моля за малко помощ за BASH
Настройка на програми
bonbon 3 3699 Последна публикация Dec 04, 2005, 16:37
от bonbon
BASH
Общ форум
Dean79 3 3839 Последна публикация Jan 13, 2006, 00:24
от Dean79
Bash присвояване на стойност от файл
Общ форум
Pulear 6 4463 Последна публикация May 21, 2006, 17:20
от Pulear