З документації 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
вбудовані функції (як уже згадувалося в коментарях), але в значній мірі ті ж самі обмеження.