zsh:为单个命令设置选项

Zor*_*war 4 zsh

我可以为单个命令设置 zsh 选项(如 Extendedglob)吗?就像是:

setopt extendedglob  param="${foo%%[0-9]##}"
Run Code Online (Sandbox Code Playgroud)

使用上面使用的命令,我相信包含在()不会是一个解决方案,因为分配param会丢失,所以我排除它作为解决方案。我也不想通过预先设置选项然后取消设置来潜在地破坏环境(在已经设置然后将取消设置的情况下)。

小智 5

它可以结合localoptions匿名函数来完成。

\n\n
local param=\'\' foo=\'foo123\'\n() {\n  setopt localoptions extendedglob\n  param="${foo%%[0-9]##}"\n}\necho $param $options[extendedglob] ;# \xe2\x87\x92 foo off\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n