Zsh 检查“是否”;以x";的值命名的参数;设定

Zsh 检查“是否”;以x";的值命名的参数;设定,zsh,Zsh,我目前使用的代码如下: if (( $( eval "echo \${+$foo}" ) )); then ./my-prog fi 有没有更优雅或简洁的方式来表达这一点?最初我试过了 if (( ${+${(P)foo}} )); then ./my-prog fi 但这引发了“错误替换”错误。(p)和+可以在相同的参数展开中使用,如果使用顺序正确: if (( ${(P)+foo} )); then ./my-prog fi (p)和+可以在相同的参数展

我目前使用的代码如下:

if (( $( eval "echo \${+$foo}" ) )); then
  ./my-prog
fi
有没有更优雅或简洁的方式来表达这一点?最初我试过了

if (( ${+${(P)foo}} )); then
  ./my-prog
fi
但这引发了“错误替换”错误。

(p)
+
可以在相同的参数展开中使用,如果使用顺序正确:

if (( ${(P)+foo} )); then
  ./my-prog
fi
(p)
+
可以在相同的参数展开中使用,如果您按正确的顺序使用它们:

if (( ${(P)+foo} )); then
  ./my-prog
fi

还有
-v
操作符,它排除了间接参数扩展的需要:

if [[ -v $foo ]]; then
  ./my-prog
fi

这记录在条件表达式部分的
man zshmisc
中。

还有
-v
运算符,它排除了间接参数扩展的需要:

if [[ -v $foo ]]; then
  ./my-prog
fi

这在条件表达式部分的
man zshmisc
中有记录。

谢谢,不管怎样,这对我想到的情况比较好。谢谢,不管怎样,这对我想到的情况比较好。