Это - высоко упрощенный история Unix и его производных. Windows не фигурирует в нем, потому что его история является чрезвычайно отдельной.
Когда-то давно операционные системы были сложными и громоздкими. Однажды в конце 1960-х, Ken Thompson, Dennis Ritchie и нескольких их коллег в AT&T Bell Labs решила записать более простую версию Multics для выполнения игр на их PDP-7, и таким образом Unix родился.
AT&T содержала права на код, и лицензии были дорогими. Многие другие компании сублицензировали Unix и продали их собственную версию. Крупные игроки включали DEC, HP, IBM, Sun. Варианты Unix добавили свои собственные расширения, часто отмечая идеи друг от друга и от академии.
Между тем, в Беркли, много академиков были недовольны ситуацией с лицензированием и решили создать версию Unix, который не включал кода AT&T-licensed. Таким образом в начале 1980-х Распределение программного обеспечения Беркли или BSD, стало свободным вариантом Unix. BSD сначала работал на Миникомпьютерах, таких как PDP-11 и VAXen.
Между тем, на Восточном побережье, Richard Stallman закатил истерику, когда он не мог получить исходный код к своему драйверу принтера. Он основал GNU (GNU не Unix) проект в 1983, намереваясь сделать свободную подобную Unix операционную систему, только лучше. После небольшого колебания ядро этой операционной системы было выбрано, чтобы быть Hurd, который собирается быть применимым любое десятилетие теперь. Много компонентов проекта GNU включены во все текущие бесплатные нельды, в особенности компилятор GCC.
Между тем, в Финляндии, Linus Torvalds пошел на разгул взламывания летом 1991 года. Когда он проснулся, он понял, что записал операционную систему для своего ПК, и он решил совместно использовать его путем помещения его на FTP-сервер в каталоге под названием Linux. Успех превысил его ожидания.
Многие люди создали дистрибутивы программного обеспечения включая ядро Linux, много программ GNU, X-оконную систему и другое бесплатное программное обеспечение. Эти дистрибутивы (Slackware, Debian, Red Hat, SUSE, хинду, Ubuntu, и т.д.) - то, что люди обычно отсылают к тому, когда они говорят “Linux”. Большинство дистрибутивов Linux состоит главным образом из free-as-in-speech программного обеспечения, хотя программное обеспечение, которое является просто free-as-in-beer, часто включается, когда никакой свободный эквивалент не существует.
Другие в настоящее время существующие нельды включают различные ветвления BSD (Вы получаете выбор FreeBSD, NetBSD и OpenBSD, при этом весь свободен, открыт и разработан через 'сеть), а также disminishing количество коммерческих вариантов, предназначенных к серверам: и AIX, HP-UX, Солярис и несколько очень младших соперников. Другой собственной основанной на Unix операционной системой является Mac OS X, работающий Appleна рабочие столы, ноутбуки и КПК.
Ваше меню, показанное выбором, будет похоже:
1) apache
2) named
3) sendmail
Select an option and press Enter:
В это время Вы входите "1" или "2" или "3": Вы не вводите слово.
Кроме того, select
циклично выполнится, пока это не будет видеть a break
команда, таким образом, Вы хотите это:
case $opt in
"apache")
date
break
;;
"named")
echo "test"
break
;;
"sendmail")
echo "test 2"
break
;;
*) echo "invalid option";;
esac
Если бы Вы хотели позволить пользователю вводить или номер или слово, то Вы могли записать это:
select opt in "${options[@]}"; do
case "$opt,$REPLY" in
apache,*|*,apache) do_something; break ;;
named,*|*,named) do_something; break ;;
sendmail,*|*,sendmail) do_something; break ;;
esac
done
Запятая не имеет никакого синтаксического значения, она должна просто там смочь скопировать соответствие на любом переменная $REPLY (который является тем, что пользователь на самом деле ввел), или переменная $opt
Ваш $opt
переменная будет установлена на слово опции, соответствующее числу что вводы данных пользователем. Если Вы хотите посмотреть на то, какой пользователь, на самом деле введенный, посмотрите на $REPLY
.
case
выдерживает сравнение $opt
против "апача", "названного" и "sendmail", это корректно, и ничто не должно быть изменено.
– manatwork
14.09.2011, 17:13
1
/2
/3
, и $opt содержит apache
/named
/sendmail
– Peter.O
15.09.2011, 09:50
$REPLY
то, что пользователь, введенный, и если это был верный номер затем $opt
будет слово, соответствующее тому числу.
– Kusalananda♦
15.09.2011, 09:53
select
управляйте нуждается в abreak
, нетcase
. – glenn jackman 14.09.2011, 21:09break
там в каждом разделе. Однако Вам никогда не будет нужен abreak
в случае... esac блок в сценарии оболочки. Это, может оказаться, так легко перепутывает их. :-) – syntaxerror 20.11.2014, 13:05break
дляcase
. Однако Вам нужен abreak
выйтиselect
цикл. – glenn jackman 20.11.2014, 14:55