Арифметические операторы оболочки bash 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Арифметические операторы оболочки bash



Оператор Синтаксис Результат
! !ехр Если ехр равно 0, возвращает 1; иначе 0
!= ехр1!=ехр2 Если ехр1 не равно ехр2, возвращает 1; иначе 0
% ехр1%ехр2 Возвращает остаток от деления ехр1 на ехр2
%= var=%exp Присваивает остаток от деления var на ехр переменной var
& ехр1&ехр2 Возвращает побитовое AND выражений ехр1 и ехр2
&& ехр1&&ехр2 Если и ехр1 и ехр2 не равны нулю, возвращает 1; иначе 0
&= var &= ехр Присваивает var побитовое AND переменных var и выражения ехр
* ехр1 * ехр2 Умножает ехр1 на ехр2
*= var *= ехр Умножает ехр на значение var и присваивает результат переменной var
+ ехр1 + ехр2 Складывает ехр1 и ехр2
+= var += ехр Складывает ехр со значением var и результат присваивает var
- -exp Операция отрицания exp (называется унарный минус)
- expl - exp2 Вычитает exp2 из exp1
-= var -= exp Вычитает exp из значения var и присваивает результат var
/ exp / exp2 Делит exp1 на exp2
/= var /= exp Делит var на exp и присваивает результат var
< expl < exp2 Если exp1 меньше, чем exp2, возвращает 1, иначе возвращает 0
<< exp1<< exp2 Сдвигает exp1 влево на exp2 бит
<<= var <<= exp Побитовый сдвиг влево значения var на exp
<= expl <= exp2 Если exp1 меньше, или равно exp2, возвращает 1; иначе возвращает 0
= var = exp Присваивает значение exp переменной var
= = exp1= =exp2 Если exp1 равно exp2. Возвращает 1; иначе возвращает 0
> exp1> exp2 1 если exp1 больше, чем exp2; иначе 0
>= exp1 >= exp2 1 если exp1 больше, или равно exp2; иначе 0
>> exp >> exp2 Сдвигает exp1 вправо на exp2 бит
>>= var >>=exp Побитовый сдвиг вправо значения var на exp
^ exp1 ^ exp2 ИсключающееOR выражений exp1 и exp2
^= var ^= exp Присваивает var побитовое исключающее OR var и exp
| exp1 | exp2 Побитовое OR выражений exp1 и exp2
|= var |= exp Присваивает var «исключающее OR» переменой var и выражения exp
|| exp1 || exp2 1 если или exp1 или exp2 являются ненулевыми значениями; иначе 0
~ ~exp Побитовое дополнение до exp

 

Кроме использования команды let в целях присваивания, let также выполняет обработку условий. Подобно С оболочка bash может присваивать переменной любое значение, а произвольное выражение само имеет значение, которое может использоваться. При этом «ноль» воспринимается как «ложь», а любое другое значение выражения – «истина». Для облегчения программирования можно записывать условия оболочки bash, в двойные скобки – (()).

Конечно же, можно присваивать результаты условных выражений переменным, как и использовать результаты арифметических вычислений в качестве условий. Хорошим примером было бы выполнять некоторое действие, одновременно декрементируя некоторое значение. Далее следует иллюстрация сказанного:

$let х=5

$while

> ((x-=1))

>do

>something

>done

$

Этот пример показывает выполнение с начальным значением 5 и декрементирует его до тех пор, пока оно не будет равно нулю. При каждой итерации выполняется функция something.

Наиболее распространенным является сокращение, избавляющееся от слова let в программах оболочек. Если объявить переменные целыми значениями, любое присвоение автоматически трактуется как арифметическое. Используйте typeset -1 для объявления и присвоения переменной, и при последующем использовании она становится целой. Или можете использовать ключевое слово integer (псевдоним для typeset -l) и объявлять переменные целыми. Таким образом, выражения типа х=y+z воспринимаются как арифметические.

Команда read позволяет читать значение переменных со стандартного ввода:

echo “Please enter Month and Day of Birth?”

read mon day trash

В переменные mon и day будут считаны соответствующие значения, введенные с клавиатуры, а переменная trash нужна для того, чтобы отобрать всю избыточно введенную информацию и игнорировать ее. Изъять переменную из программы можно с помощью команды unset.

Имена некоторых переменных имеют для командного процессора специальный смысл. Значением переменной PATH (т.е. $РАТН) является список каталогов, в которых командный процессор осуществляет поиск программы или команды, указанной в командной строке, в том случае, если указанное имя программы или команды не содержит ни одного символа /. Если имя команды содержит хотя бы один символ /, то последовательность поиска, предписываемая значением переменной PATH, нарушается. В этом случае в зависимости от того, является имя команды абсолютным или относительным, поиск начинается соответственно от корневого или текущего каталога.

Если Вы сами явно не присвоите переменной PATH какого-либо значения, то стандартной (по умолчанию) последовательностью поиска файла является следующая: текущий каталог, каталог /bin, каталог /usr/bin. Именно в такой последовательности командный процессор отыскивает файлы, содержащие программы, которые обеспечивают выполнение таких, например, команд, как echo, lscat. В списке каталогов, являющемся значением переменной PATH, имена каталогов отделяются друг от друга с помощью символа двоеточия. В качестве примера приведем команду: PATH =:/usr/andy/bin:/usr/mike/bin:/bin:/usr/bin.

Переменные PS1 и PS2 предназначены для отображения промптера командного процессора. PS1 – это промптер командного процессора, по умолчанию его значение равно символу $ или #. Если какая-то интерактивная программа, запущенная командным процессором, требует ввода, то используется промптер PS2. Он по умолчанию имеет значение символа >.

Другие стандартные переменные:

HOME – имя домашнего каталога пользователя. Если команда cd вводится без аргументов, то происходит переход в каталог, указанный в этой переменной.

IFS – последовательность символов, являющихся разделителями в командной строке. Это символы пробел, табуляция и перевод строки(new line).

MAIL – командный процессор каждый раз перед выводом на экран промптера проверяет содержимое файла, имя которого указано в этой переменной, и если содержимое этого файла изменилось с момента последнего ввода из него, то перед тем как вывести на терминал промптер, командный процессор выводит на терминал сообщение You have mail (у Вас есть почта).

TERM – тип используемого терминала.

LOGNAME – содержит регистрационное имя пользователя, которое устанавливается автоматически при входе в систему.

В командном процессоре Си имеется еще несколько стандартных переменных. Значение всех переменных можно просмотреть с помощью команды set.

 



Поделиться:


Последнее изменение этой страницы: 2021-01-14; просмотров: 132; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.178.207 (0.007 с.)