<Предыдущая | Содержание: | Следующая>
Расширения для управления пустыми переменными
Несколько расширений параметров предназначены для работы с несуществующими и пустыми переменными. Эти расширения удобны для обработки отсутствующих позиционных параметров и присвоения параметрам значений по умолчанию.
${параметр:-слово}
If параметр не задано (т. е. не существует) или пусто, это раскрытие приводит к значению слово. Если параметр не пусто, раскрытие приводит к значению параметр.
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo: - "замещающее значение, если не установлено"}
замените значение, если не установлено [me @ linuxbox ~] $ эхо $ foo
[я @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo: - "замещающее значение, если не установлено"}
бар
[я @ linuxbox ~] $ эхо $ foo
бар
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo: - "замещающее значение, если не установлено"}
замените значение, если не установлено [me @ linuxbox ~] $ эхо $ foo
[я @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo: - "замещающее значение, если не установлено"}
бар
[я @ linuxbox ~] $ эхо $ foo
бар
${параметр:=слово}
If параметр не задано или пусто, это раскрытие приводит к значению слово. Кроме того, стоимость слово назначен на параметр. Если параметр не пусто, раскрытие приводит к значению параметр.
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo: = "значение по умолчанию, если не задано"}
значение по умолчанию, если не установлено [me @ linuxbox ~] $ эхо $ foo значение по умолчанию, если не установлено [me @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo: = "значение по умолчанию, если не задано"}
бар
[я @ linuxbox ~] $ эхо $ foo
бар
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo: = "значение по умолчанию, если не задано"}
значение по умолчанию, если не установлено [me @ linuxbox ~] $ эхо $ foo значение по умолчанию, если не установлено [me @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo: = "значение по умолчанию, если не задано"}
бар
[я @ linuxbox ~] $ эхо $ foo
бар
Примечание. Позиционные и другие специальные параметры не могут быть назначены таким образом.
${параметр:?слово}
If параметр не задано или пусто, это раскрытие приводит к завершению сценария с ошибкой, и содержимое слово отправляются в стандартную ошибку. Если параметр не пусто, раскрытие приводит к значению параметр.
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo:? "параметр пуст"}
bash: foo: параметр пуст [me @ linuxbox ~] $ эхо $?
1
[я @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo:? "параметр пуст"}
бар
[я @ linuxbox ~] $ эхо $?
0
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo:? "параметр пуст"}
bash: foo: параметр пуст [me @ linuxbox ~] $ эхо $?
1
[я @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo:? "параметр пуст"}
бар
[я @ linuxbox ~] $ эхо $?
0
${параметр:+слово}
If параметр не задано или пусто, расширение ни к чему не приводит. Если параметр не пусто, значение слово заменяется параметр; однако ценность параметр не изменено.
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo: + "замещающее значение, если установлено"}
[я @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo: + "замещающее значение, если установлено"}
[я @ linuxbox ~] $ foo =
[я @ linuxbox ~] $ echo $ {foo: + "замещающее значение, если установлено"}
[я @ linuxbox ~] $ foo = bar
[я @ linuxbox ~] $ echo $ {foo: + "замещающее значение, если установлено"}
замещающее значение, если установлено
замещающее значение, если установлено