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




Программирование на языке сценариев командной оболочки - стр. 44


Обратите внимание! Символ "<" необходимо экранировать внутри [ ].

>

больше, в смысле величины ASCII-кодов

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

Обратите внимание! Символ ">" необходимо экранировать внутри [ ].

См. Пример 25-6 относительно применения этого оператора сравнения.

-z

строка "пустая", т.е. имеет нулевую длину

-n

строка не "пустая".

Оператор -n

требует, чтобы строка была заключена в кавычки внутри квадратных скобок. Как правило, проверка строк, не заключенных в кавычки, оператором ! -z, или просто указание строки без кавычек внутри квадратных скобок (см. Пример 7-6), проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда

заключайте проверяемую строку в кавычки. [18]

Пример 7-5. Операции сравнения

#!/bin/bash

a=4 b=5

# Здесь переменные "a" и "b" могут быть как целыми числами, так и строками. # Здесь наблюдается некоторое размывание границ #+ между целочисленными и строковыми переменными, #+ поскольку переменные в Bash не имеют типов.

# Bash выполняет целочисленные операции над теми переменными, #+ которые содержат только цифры # Будьте внимательны!

echo

if [ "$a" -ne "$b" ] then echo "$a не равно $b" echo "(целочисленное сравнение)" fi

echo

if [ "$a" != "$b" ] then echo "$a не равно $b." echo "(сравнение строк)" # "4" != "5" # ASCII 52 != ASCII 53 fi

# Оба варианта, "-ne" и "!=", работают правильно.

echo

exit 0

Пример 7-6. Проверка -- является ли строка пустой

#!/bin/bash # str-test.sh: Проверка пустых строк и строк, не заключенных в кавычки,

# Используется конструкция if [ ... ]

# Если строка не инициализирована, то она не имеет никакого определенного значения. # Такое состояние называется "null" (пустая) (это не то же самое, что ноль).




Содержание  Назад  Вперед