Руководство пользователя для GNU Awk
7. Выражения
7.12 Условные выражения
Условное выражение есть специальный вид выражения с тремя операндами. Оно позволяет использовать значение первого выражения для выбора одного из двух других. Условное выражение --- такое же как в языке Си:
selector ? if-true-exp : if-false-exp
Имеются три подвыражения. Первое, селектор, всегда вычисляется первым. Если это "true" (не ноль и не пустая цепочка) то затем вычисляется выражение if-true-exp и его значение становится значением всего выражения. В противном случае следующим вычисляется выражение if-false-exp и его значение принимается за значение всего выражения. Например, такое выражение выдает абсолютное значение x:
x ? 0 ? x : -x
Каждый раз когда вычисляется условное выражение, вычисляется одно из выражений if-true-exp и if-false-exp; другое игнорируется. Это важно учитывать, если выражения имеют побочные эффекты. Например, такое условное выражение выдает элемент i либо массива a либо массива b и продвигает i:
x == y ? a[i++] : b[i++]
При этом увеличение i происходит точно один раз, потому что в любом случае вычисляется только одно из увеличивающих его выражений. См. главу 11 [Массивы в awk], стр. 123, для информации о массивах.
В качестве небольшого расширения в gawk допускается продолжение оператора, который использует `?:', простым вставлением newline после любого символа, Однако, нельзя вставлять newline перед любым символом без употребления продолжения обратным слешем (см. раздел 2.6 [Операторы awk против строк], page 17). Если указать `--posix' (см. раздел 14.1 [Параметры командной строки], стр. 161), то это расширение отменяется.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|