Объяснение оператора двоеточия в:: ${foo = value}
Я понимаю оператор двоеточия в bash, который действует как null, и я знаю, что он использовался в расширение параметра, а также используется другими способами, но может кто-то объяснить это:
: ${SOMETHING='value'}
Из эксперимента я знаю, что это устанавливает переменную окружения $SOMETHING
в 'value'
, но почему?
"Только потому, что он это делает" является допустимым ответом, но тогда, пожалуйста, укажите мне документацию для него (которую я не могу найти), или подходящее имя для этого использования было бы полезно. Я надеюсь, что там будет более просветляющее объяснение.
Ответы
Ответ 1
Выражение устанавливает SOMETHING на value
, если оно еще не установлено. Это полезный оператор во многих ситуациях. Однако он также возвращает назначенное значение, поэтому, если вы просто выполнили
${SOMETHING='value'}
тогда ваша оболочка попытается вызвать команду value
. Это может или не может сделать что-то нежелательное; по крайней мере, он выкинул бы сообщение "значение: команда не найдена".
Чтобы этого избежать, вы можете использовать no-op :
, который оценивает его аргумент, а затем отбрасывает его, а не выполняет его.
Ответ 2
Разъяснение здесь: http://tldp.org/LDP/abs/html/parameter-substitution.html
Если параметр не установлен, установите его по умолчанию.
Обе формы почти эквивалентны. The: имеет значение только тогда, когда $был объявлен и равен нулю, [1], как указано выше.
echo ${var=abc} # abc
echo ${var=xyz} # abc
# $var had already been set to abc, so it did not change.