Инициализация локальной переменной Bash

GTK 3.20 внес несколько значительных изменений в способ обработки тем. К сожалению, тема Delorean не была обновлена ​​для поддержки GTK 3.20. Вам необходимо использовать тему, совместимую с GTK 3.20, например темы Vertex или Arc (или обратиться к автору темы Delorean с просьбой сделать тему совместимой с GTK 3.20).

3
29.08.2017, 02:06
1 ответ

local foo="" и local foo=в точности эквивалентны. В обоих случаях правая часть -знака равенства является пустой строкой.

local fooи local foo=различаются.:local fooоставляет fooнеустановленным, а local foo=устанавливает fooв пустую строку. Точнее, local fooсоздает локальную переменную, и эта переменная изначально не установлена. Последующее присваивание foo=…устанавливает локальное значение, и это присваивание можно комбинировать с оператором local. Свидетель:

bash-4.3$ demo () {
  local unset empty=
  echo "unset=\"${unset-(not set)}\" empty=\"${empty-(not set)}\""
}
bash-4.3$ demo
unset="(not set)" empty=""

Это то же поведение, что и у ksh (, за исключением того, что в ksh вам нужно использовать ключевое слово typesetвместоlocal). С другой стороны, в zsh local fooустанавливает fooв пустую строку.

6
27.01.2020, 21:13

Теги

Похожие вопросы