我可以为单个命令设置 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 中使用匿名函数,我们可以给它一些一次性的名字。