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

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

#!/bin/bash

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

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

# Если строка не инициализирована, то она не имеет никакого определенного значения.

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

if [ -n $string1 ] # $string1 не была объявлена или инициализирована.

then

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

else

echo "Строка "string1" пустая."

fi

# Неверный результат.

# Выводится сообщение о том, что $string1 не пустая,

#+не смотря на то, что она не была инициализирована.

echo

# Попробуем еще раз.

if [ -n "$string1" ] # На этот раз, переменная $string1 заключена в кавычки.

then

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

else

echo "Строка "string1" пустая."

fi # Внутри квадратных скобок заключайте строки в кавычки!

echo

if [ $string1 ] # Опустим оператор -n.

then

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

else

echo "Строка "string1" пустая."

fi

# Все работает прекрасно.

# Квадратные скобки -- [ ], без посторонней помощи определяют, что строка пустая.

# Тем не менее, хорошим тоном считается заключать строки в кавычки ("$string1").

#

# Как указывает Stephane Chazelas,

# if [ $string 1 ] один аргумент "]"

# if [ "$string 1" ] два аргумента, пустая "$string1" и "]"

echo

string1=initialized

if [ $string1 ] # Опять, попробуем строку без ничего.

then

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

else

echo "Строка "string1" пустая."

fi

# И снова получим верный результат.

# И опять-таки, лучше поместить строку в кавычки ("$string1"), поскольку...

string1="a = b"

if [ $string1 ] # И снова, попробуем строку без ничего..

then

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

else

echo "Строка "string1" пустая."

fi

# Строка без кавычек дает неверный результат!

exit 0

# Спвсибо Florian Wisser, за предупреждение.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

9.13 Пустой Оператор

Из книги C++ автора Хилл Мюррей

9.13 Пустой Оператор Пустой оператор имеет вид;Пустой оператор используется для помещения метки непоредственно перед *) составного оператора или того, чтобы снабдить такие операторы, как while, пустым


Киберпространство является общественным

Из книги Криптоанархия, кибергосударства и пиратские утопии автора Ладлоу Питер

Киберпространство является общественным Развернувшаяся в Соединенных Штатах полемика вокруг Закона о телекоммуникациях 1996 года безжалостно обнажила ограничения «калифорнийской идеологии». Барлоу может, конечно, предаваться мечтаниям об уходе в гиперреальность


У15.2 Является ли окно строкой?

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

У15.2 Является ли окно строкой? Окно содержит ассоциированный с ним текст, представленный атрибутом text типа STRING. Стоит ли отказаться от атрибута и объявить WINDOW наследником класса


Null (пустой тип) и undefined (неопределенный тип)

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Null (пустой тип) и undefined (неопределенный тип) Если переменная была объявлена с помощью ключевого слова var, но ей еще ни разу не присваивалось значение, она имеет неопределенный тип (undefined):var MyVariable;После выполнения этой строки переменная MyVariable имеет тип undefined. Как уже


3.3. Проверка, содержит ли строка допустимое число

Из книги C++. Сборник рецептов автора Диггинс Кристофер

3.3. Проверка, содержит ли строка допустимое число ПроблемаИмеется строка string и требуется определить, содержит ли она допустимое число.РешениеДля проверки допустимости числа можно использовать шаблон функции lexical_cast библиотеки Boost. При таком подходе допустимое число


Пустой оператор

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Пустой оператор Синтаксис:;Действие:Пустой оператор — это оператор, состоящий только из точки с запятой. Он может появиться в любом месте программы, где по правилам синтаксиса требуется оператор. Выполнение пустого оператора не меняет состояния программы.Пример:for(i = 0; i


Подарок в пустой корзине

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

Подарок в пустой корзине Повысить конверсию в интернет-магазине позволяет простая и интересная фишка – класть всем новым пользователям в корзину какой-то небольшой подарок и рядом делать красивую заметную надпись: «В вашей корзине один подарок!».Корзина – это значимый


Пример 4-4. Целое число или строка?

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

Пример 4-4. Целое число или строка? #!/bin/bash# int-or-string.sh: Целое число или строка?a=2334 # Целое число.let "a += 1"echo "a = $a " # a = 2335echo # Все еще целое число.b=${a/23/BB} # замена "23" на "BB". # Происходит трансформация числа в строку.echo "b = $b" # b = BB35declare -i b


Пример 13-5. Проверка образа CD

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

Пример 13-5. Проверка образа CD # С правами root...mkdir /mnt/cdtest # Подготовка точки монтирования.mount -r -t iso9660 -o loop cd-image.iso /mnt/cdtest # Монтирование образа диска.# ключ "-o loop" эквивалентен "losetup /dev/loop0"cd /mnt/cdtest # Теперь проверим образ диска.ls -alR # Вывод списка


Пример 24-1. Проверка аргументов командной строки с помощью "И-списка"

Из книги автора

Пример 24-1. Проверка аргументов командной строки с помощью "И-списка" #!/bin/bash# "И-список"if [ ! -z "$1" ] && echo "Аргумент #1 = $1" && [ ! -z "$2" ] && echo "Аргумент #2 = $2"then echo "Сценарию передано не менее 2 аргументов." # Все команды в цепочке возвращают true.else echo "Сценарию передано менее 2


Пустой оператор

Из книги автора

Пустой оператор Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:1. Для использования символа ; после последнего оператора в блоке: begin a := 1; b := a; end Поскольку в языке Паскаль символ ; разделяет операторы, то в


Чем TDD не является

Из книги автора

Чем TDD не является При всех своих достоинствах TDD – не религия и не панацея. Выполнение трех законов не гарантирует ни одного из перечисленных преимуществ. Плохой код можно написать даже при предварительном написании тестов. Да и сами тесты тоже могут быть написаны