Что делает оператор запятой в арифметике Баша?

В руководстве Bash, сек 6.5 Арифметика оболочки

expr1 , expr2 comma 

Что делает оператор запятой?

Являются ли expr1 и expr2 арифметическими?

2 Solutions collect form web for “Что делает оператор запятой в арифметике Баша?”

, является оператором списка.

Список арифметических выражений будет оцениваться слева направо, последним результатом выражения является возвращаемое значение:

 $ echo "$(( a=1, ++a, ++a ))" 3 

Оператор списка был добавлен в bash-2.04-devel (наряду с операторами pre / post increment / decment).

Возможно, вы захотите прочитать expr.c чтобы узнать, как были реализованы другие операторы, и функцию expcomma() for , operator.

удар

Оператор запятой действителен в bash ( LESS=+/'expr1 , expr2' man bash ):

expr1, expr2
запятая

И никакого другого объяснения его использования.
Для этого мы должны прочитать описание «C Language» (где все эти арифметические операторы родились) .

Пример (как в ссылке выше) (вторая из которых имеет значение 5):

 $ echo "$(( (t=3, t+2) )) $t" 5 3 

Или, проще:

 $ echo "$(( t=3, t+2 )) $t" 5 3 

Да, каждый элемент, разделенный запятой, может быть выражением :

 1313 expression: assignment-expression expression , assignment-expression 

POSIX

POSIX не включает запятую:
Таблица: выбранные стандартные операторы ИСО и ключевые слова управления

Или просто попробуйте:

 $ dash -c 'echo $(( t=3,t+2 ))' dash: 1: arithmetic expression: expecting EOF: " t=3,t+2 " $ bash -c 'echo $(( t=3,t+2 ))' 5 

Как IBM подтверждает на своей странице для оболочки AIX и POSIX (выделение мое):

Поддерживаются все интегральные операторы, кроме … и запятая (,).

Но также в AIX IBM заявляет о поддержке оператора запятой из оболочки ksh93 в /usr/bin/ksh93

Доступны более арифметические операторы, включая унарные +, ++, – и конструкцию?: (Например, «x? Y: z»), а также оператор (запятая).

Вывод:

 dash, ksh do not have a comma operator. ksh93 may have a comma operator. bash, zsh do have a comma operator. 
  • Как исправить bash, ища программу в неправильном каталоге (Проблемы с настройкой NPM на Ubuntu 11.10)
  • установить дату с пользовательского ввода в оболочку
  • Запускать tmux всегда, когда я открываю терминал
  • Как мне назначить конкретную команду?
  • Замена белых пробелов / символов на обратную косую черту
  • Является ли терминал или оболочка ответственными за действия нажатий клавиш?
  • Как разрезать текстовый файл на несколько файлов по 100 строк каждый?
  • Как я могу выполнить локальный скрипт на удаленном компьютере и включить аргументы?
  • Перемещение файлов по дате в другую папку с использованием CLI
  • Сбой сценария: Ошибка синтаксиса: «(« неожиданно
  • Создание списка файлов, удаление «дубликатов» с различным суффиксом
  • Linux и Unix - лучшая ОС в мире.