zsh: opção set para um único comando

2

Posso definir uma opção zsh (como extendedglob) para um único comando? Algo como:

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

Com o comando usado acima, acredito que fechar em () não seria uma solução porque a atribuição de param seria perdida, portanto estou excluindo isso como uma solução. Eu também não quero potencialmente estrobiar o ambiente, definindo a opção de antemão e, em seguida, desmarcando-o depois (no cenário que já foi definido e, em seguida, será desconfigurado).

    
por Zorawar 26.02.2015 / 03:00

1 resposta

1

Isso pode ser feito em uma conjunção de localoptions e função anônima .

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

Se não pudermos usar funções anônimas em determinada versão do zsh, poderíamos dar algum nome descartável para ela.

    
por 26.02.2015 / 04:59

Tags