Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Linux all на 100% - Маслаков В.

Маслаков В. Linux all на 100% — Питер , 2009. — 331 c.
ISBN 978-5-388-00757-5
Скачать (прямая ссылка): linuxna1002009.pdf
Предыдущая << 1 .. 43 44 45 46 47 48 < 49 > 50 51 52 53 54 55 .. 116 >> Следующая

? Перед некоторыми командами требуется поставить знак косой черты \. чтобы интерпретатор команд не распознавал их как символы, относящиеся к выполнению команды. Например, если не сделать этого перед символом >, то интерпретатор команд решит, что он должен вывести результат работы программы в файл, указанный после этого символа, и результат работы будет неверным
Рассмотрим пример. Создадим командный файл со следующим содержанием:
#!/Ьіп/Ьа$б х-12 у=5
а= expr $x 4 Jy echo -n "$a "
b= expr $x \& $y' echo -n "$b
с= expr $x \< $y' . echo -n "$c
d= expr $x \<= $y . echo -n "$d
е- expr $x \> $y' : echo -n "$e
f- expr $x \>= $y . echo -n "$f
9= expr $x = Jy' . echo n "$g
h= expr $x != $y' ; echo n "$h
i- expr $x + $y' ; echo -n "$i "
j= expr $x sy . echo -n
k= expr $x \* $y‘ : echo -n "$k *
1= 'expr $x / $y‘ . echo -n '•$1
m= expr $x % $y‘ . echo "$m "
После выполнения этого командного файла отобразится следующий |н\т\ штат:
12 12 0 0 1 1 0 1 17 7 60 2 2
Существует более короткий способ выполнения арифметических операций, причем с его помощью можно составлять целые выражения Его вид таков.
$((выражение))
Например, найдем значение выражения (2x2 + 2) 3. Для этого подходит такой командный файл:
#!/bin/bash a-S(((2*2+2)/3)) echo Sa
Глава 5.0< новы shell-программирования
Заметьте что при работе с таким форматом вычисления значений математических выражений справедливы все математические операции, которые применяются с командой ехрг.
При работе с переменными иногда применяется команда eva 1 (параметров она не имеет). Э га команда работает с переменными, которые содержат некоторую строку Если в строке обнаружилось имя переменной (или нескольких переменных), то команда i юпытается найти эту переменную и в строке на месте ее имени подставить ее значение. Можно привести интересный пример. Напишем еще один командный файл:
#!/bin/b.ish а=10 Ь=''?а’ с=ЧЬ echo $с eval echo $с eva 1 eva echo $c
После запуска этого файла получается интересный результат:


10
При обычном выводе значения переменной с на экран выводится ее значение — символы $Ь. При выполнении одной команды eval выполняется поиск переменной Ь, а поскольку такая переменная существует, символы $Ь заменяются значением переменной Ь. При двух выполнениях eval процедура та же, но при втором выполнении eval осуществляется поиск переменной а, а поскольку она существует. символы $а заменяются значением переменной а. Так можно делать сколько угодно раз.
С командой eval можно произвести еще одну интересную операцию. Предположим, есть неко горая переменная, содержащая математическое выражение в текстовом виде Значение этого математического выражения можно легко высчитать:
#! /Ь in/bc sh а=’(2*2+«)/3' b='$(($a Г eval echo $b
На экран будет выведено значение выражения, которое в данном случае хранится в переменной а Таким образом можно сделать простейший калькулятор.
Переменные
При работе с переменными иногда необходимо, чтобы некоторые переменные были доступны не только в рамках конкретного командного файла, где они были объявлены, но и в командных файлах, которые вызываются из этого командною файла. Например, имеется некоторый алгоритм, выполняющий определенную операцию на основе значений одной или нескольких переменных Если планируется выполнять этот алгоритм из нескольких командных файлов, не связанных между собой, логично вынести алгоритм в отдельный файл и обращаться к этому файлу из других командных файлов. Операция, позволяющая другим командным файлам ра ботатьс той или иной переменной, называется экспортированием переменной и выполняется так:
export имяперененной
Работать с экспортированной переменной смогут только командные файлы, которые были запущены из того файла, где была объявлена эта переменная. Рассмотрим пример. Создадим в одном каталоге три командных файла со следующим содержа нием.
Файл scripttest:
#!/bin/bash var="Hello world!" export var ./subl ./sub2
Файл subi:
#!/bin/bash
echo “subi 1 var = $var" var="No Hello world" echo "subl.2: var = $var"
Файл sub2:
#!/bin/bash
echo "sub2: var - $var"
Запустив файл scripttest, получаем следующий результат:
subl.l var = Hello Nurld1 subl.2 var « No Hello Nor Id sub2: var - Hello Nor Id!
Глава 5. Основы shell-программирования
Из примера понятно, что попытки изменить экспортируемую переменную имеют смысл только в рамках командного файла, в котором они предпринимаются.
При запуске отдельно файлов subi и sub2 результата не будет, так как значение переменной var не будет определено.
Переменные оболочки
Существуют глобальные переменные, значения которых устанавливаются при запуске операционной системы. В некоторых случаях они позволяют узнать ценную информацию о компьютере и пользователе. Рассмотрим некоторые из этих переменных (табл. 5.3)
Таблица 5.3. Глобальные переменные
Переменная Назначение
BASH Муть к исполняемому файлу оболочки bash (если вы работаете в ней)
CGLL'MNS Количество колонок на экране в текстовом режиме
HOMF Путь к домашнему каталогу текущего пользователя
Предыдущая << 1 .. 43 44 45 46 47 48 < 49 > 50 51 52 53 54 55 .. 116 >> Следующая