2

Могу ли я установить опцию zsh (например, extendedglob) для одной команды? Что-то вроде:

setopt extendedglob  param="${foo%%[0-9]##}"

С командой, использованной выше, я считаю, что включение в () не будет решением, потому что назначение param будет потеряно, поэтому я исключаю это как решение. Я также не хочу потенциально загромождать среду, предварительно установив этот параметр, а затем сбросив его (в сценарии, в котором он уже был установлен, а затем будет сброшен).

1 ответ1

1

Это может быть сделано в сочетании localoptions и анонимной функции.

local param='' foo='foo123'
() {
  setopt localoptions extendedglob
  param="${foo%%[0-9]##}"
}
echo $param $options[extendedglob] ;# ⇒ foo off

Если мы не можем использовать анонимные функции в определенной версии zsh, мы можем дать для него какое-то одноразовое имя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .