В Bash test
и [
являются встроенными.
Двойной кронштейн обеспечивает дополнительную функциональность. Например, вы можете использовать &&
и ||
вместо -a
и -o
, и есть оператор сопоставления регулярного выражения =~
.
В дополнение к разделению имени переменной фигурные скобки используются для расширения параметра , поэтому вы можете делать такие вещи, как:
Обрезать содержимое переменной
$ var="abcde"; echo ${var%d*}
abc
Сделать замены, аналогичные sed
$ var="abcde"; echo ${var/de/12}
abc12
Использовать значение по умолчанию
$ default="hello"; unset var; echo ${var:-$default}
hello
и еще несколько
Кроме того, расширения скобок создают списки строк, которые обычно повторяются в циклах:
$ echo f{oo,ee,a}d
food feed fad
$ mv error.log{,.OLD}
(error.log is renamed to error.log.OLD because the brace expression
expands to "mv error.log error.log.OLD")
$ for num in {000..2}; do echo "$num"; done
000
001
002
$ echo {00..8..2}
00 02 04 06 08
$ echo {D..T..4}
D H L P T
Обратите внимание на то, что перед Bash 4 не были доступны функции начального нуля и приращения.
Спасибо gboffi за напоминание о расширении фигурных скобок.
Двойные скобки используются для арифметических операций :
((a++))
((meaning = 42))
for ((i=0; i<10; i++))
echo $((a + b + (14 * c)))
и они позволяют опускать знаки доллара для целочисленных переменных и переменных массива и включают пробелы вокруг операторов для удобства чтения.
Одинарные скобки также используются для массива индексы:
array[4]="hello"
element=${array[index]}
Фигурная скобка требуется для (большинства / всех?) Ссылок на массивы с правой стороны.
Комментарий
ephemient напомнил мне, что скобки также используются для подоболочек. И что они используются для создания массивов.
array=(1 2 3)
echo ${array[1]}
2