Читаем Искусство программирования на языке сценариев командной оболочки полностью

echo "a = $a" # a = -2147483648

# ОШИБКА! (выход за границы диапазона)

Bash ничего не знает о существовании чисел с плавающей запятой. Такие числа, из-за наличия символа десятичной точки, он воспринимает как строки.

a=1.5

let "b = $a + 1.3" # Ошибка.

# t2.sh: let: b = 1.5 + 1.3: syntax error in expression (error token is ".5 + 1.3")

echo "b = $b" # b=1

Для работы с числами с плавающей запятой в сценариях можно использовать утилиту-калькулятор bc.

битовые операции. Битовые операции очень редко используются в сценариях командного интерпретатора. Их главное назначение, на мой взгляд, установка и проверка некоторых значений, читаемых из портов ввода-вывода и сокетов. "Битовые операции" гораздо более уместны в компилирующих языках программирования, таких как C и C++.

битовые операции

<<

сдвигает на 1 бит влево (умножение на 2)

<<=

"сдвиг-влево-равно"

let "var <<= 2" значение переменной var сдвигается влево на 2 бита (умножается на 4)

>>

сдвиг вправо на 1 бит (деление на 2)

>>=

"сдвиг-вправо-равно" (имеет смысл обратный <<=)

&

по-битовое И (AND)

&=

"по-битовое И-равно"

|

по-битовое ИЛИ (OR)

|=

"по-битовое ИЛИ-равно"

~

по-битовая инверсия

!

По-битовое отрицание

^

по-битовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)

^=

"по-битовое ИСКЛЮЧАЮЩЕЕ-ИЛИ-равно"

логические операции

&&

логическое И (and)

if [ $condition1 ] && [ $condition2 ]

# То же самое, что: if [ $condition1 -a $condition2 ]

# Возвращает true если оба операнда condition1 и condition2 истинны...

if [[ $condition1 && $condition2 ]] # То же верно

# Обратите внимание: оператор && не должен использоваться внутри [ ... ].

оператор &&, в зависимости от контекста, может так же использоваться в И-списках для построения составных команд.

||

логическое ИЛИ (or)

if [ $condition1 ] || [ $condition2 ]

# То же самое, что: if [ $condition1 -o $condition2 ]

# Возвращает true если хотя бы один из операндов истинен...

if [[ $condition1 || $condition2 ]] # Also works.

# Обратите внимание: оператор || не должен использоваться внутри [ ... ].

Bash производит проверку кода возврата КАЖДОГО из операндов в логических выражениях.

<p><strong>Пример 8-3. Построение сложных условий, использующих && и ||</strong></p>

#!/bin/bash

a=24

b=47

if [ "$a" -eq 24 ] && [ "$b" -eq 47 ]

then

echo "Первая проверка прошла успешно."

else

echo "Первая проверка не прошла."

fi

# ОКА: if [ "$a" -eq 24 && "$b" -eq 47 ]

# пытается выполнить ' [ "$a" -eq 24 '

# и терпит неудачу наткнувшись на ']'.

#

# if [[ $a -eq 24 && $b -eq 24 ]] это правильный вариант

# (в строке 17 оператор "&&" имеет иной смысл, нежели в строке 6.)

# Спасибо Stephane Chazelas.

if [ "$a" -eq 98 ] || [ "$b" -eq 47 ]

then

echo "Вторая проверка прошла успешно."

else

echo "Вторая проверка не прошла."

fi

# Опции -a и -o предоставляют

#+ альтернативный механизм проверки условий.

# Спасибо Patrick Callahan.

if [ "$a" -eq 24 -a "$b" -eq 47 ]

then

echo "Третья проверка прошла успешно."

else

echo "Третья проверка не прошла."

fi

if [ "$a" -eq 98 -o "$b" -eq 47 ]

then

echo "Четвертая проверка прошла успешно."

else

echo "Четвертая проверка не прошла."

fi

a=rhino

b=crocodile

if [ "$a" = rhino ] && [ "$b" = crocodile ]

then

echo "Пятая проверка прошла успешно."

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных