Ответ 1
Существует два варианта обозначения ${var-value}
, один без двоеточия, как показано, и один с двоеточием: ${var:-value}
.
Первая версия без двоеточия означает "если $var
установлено любое значение (включая пустую строку), используйте его; в противном случае используйте value
вместо этого.
Вторая версия с двоеточием означает "если $var
установлено любое значение, кроме пустой строки, используйте его; в противном случае используйте value
вместо этого.
Этот шаблон сохраняется и для других подстановок переменных, в частности:
-
${var:=value}
- Если
$var
установлено на любую непустую строку, оставьте ее неизменной; в противном случае установите$var
вvalue
.
- Если
-
${var=value}
- Если
$var
установлено любое значение (включая пустую строку), оставьте его неизменным; в противном случае установите$var
вvalue
.
- Если
-
${var:?message}
- если
$var
задано любая непустая строка, ничего не делать; в противном случае, жалуйтесь на использование данного сообщения '(где предоставляется сообщение по умолчанию, еслиmessage
само пусто).
- если
-
${var?message}
- Если
$var
установлено любое значение (включая пустую строку), ничего не делать; в противном случае, жалуйтесь на использование данного сообщения '.
- Если
Все эти обозначения относятся к любой совместимой с POSIX оболочке (Bourne, Korn, Bash и другие). Вы можете найти руководство для версии bash
онлайн - в разделе Расширение параметров оболочки. Bash также имеет ряд нестандартных обозначений, многие из которых чрезвычайно полезны, но не обязательно разделяются с другими оболочками.