Почему коды, сгенерированные клавишей [UP], изменились после сеанса ssh

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в пустую строку.

4
24.12.2019, 17:06
0 ответов

Теги

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