zsh:为单个命令设置选项

zsh:为单个命令设置选项

我可以为单个命令设置 zsh 选项(例如 extendedglob)吗?例如:

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

对于上面使用的命令,我认为将其括起来()不是一个解决方案,因为的赋值param会丢失,所以我将其排除在解决方案之外。我也不想通过预先设置选项然后随后取消设置来破坏环境(在已经设置然后将被取消设置的情况下)。

答案1

可以结合localoptions匿名函数

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

如果我们不能在某些版本的 zsh 中使用匿名函数,我们可以给它一些一次性的名字。

相关内容