З документації bash :
(list)список виконується в середовищі додаткової оболонки (див. КОМАНДУ ВИКОНАВЧОГО ЕКОЛОГІЇ нижче). Змінні призначення та вбудовані команди, які впливають на середовище оболонки, не залишаються в силі після завершення команди. Статус повернення - це статус виходу зі списку.
Іншими словами, ви переконуєтесь, що те, що трапляється у "списку" (як-от cd), не має ефекту поза межами (та ). Єдине , що буде текти це код виходу останньої команди або з set -eпершою командою , яка генерує помилку (крім деяких , таких як if, whileі т.д.)
((expression))Вираз оцінюється за правилами, описаними нижче в АРИТМЕТИЧНІЙ ОЦІНКІ. Якщо значення виразу не дорівнює нулю, стан повернення дорівнює 0; інакше статус повернення дорівнює 1. Це абсолютно рівнозначно вираженню "вираз".
Це розширення на баш, що дозволяє займатися математикою. Це дещо схоже на використання exprбез усіх обмежень expr(наприклад, пробіли скрізь, втеча *тощо)
[[ expression ]]Поверніть статус 0 або 1 залежно від оцінки виразу умовного виразу. Вислови складаються з праймеріз, описаних нижче в CONDITIONAL EXPRESSIONS. Розбиття слів та розширення імені шляху не виконуються на словах між [[і]]; виконується розширення тильди, розширення параметрів і змінних, арифметичне розширення, підміна команд, підміна процесу і видалення цитат. Умовні оператори, такі як -f, повинні бути без котирування, щоб їх визнали праймерізами.
При використанні з [[, оператори <і> сортують лексикографічно, використовуючи поточну локаль.
Це пропонує розширений тест для порівняння рядків, чисел та файлів, схожих на testпропозиції, але більш потужних.
[ expr ]Поверніть статус 0 (істинний) або 1 (хибний) залежно від оцінки умовного виразу expr. Кожен оператор і оператор і повинен бути окремим аргументом. Вирази складаються з праймериз, описаних вище в CONDITIONAL EXPRESSIONS. тест не приймає жодних варіантів, а також не приймає та ігнорує аргумент - як означає кінець параметрів.
[...]
Цей дзвонить test. Власне, в старі часи це [було символічним посиланням на test. Це працює так само, і у вас є однакові обмеження. Оскільки двійковий файл знає ім'я, з якого він був запущений, програма тестування може аналізувати параметри, поки не знайде параметр ]. Веселі трюки Unix.
Зверніть увагу , що в разі bash, [і testвбудовані функції (як уже згадувалося в коментарях), але в значній мірі ті ж самі обмеження.