首页 > 解决方案 > 检查是否设置了“以x的值命名的参数”

问题描述

我目前正在使用这样的一段代码:

if (( $( eval "echo \${+$foo}" ) )); then
  ./my-prog
fi

有没有更优雅或更简洁的方式来表达这一点?原来我试过

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

但这引发了“错误替换”错误。

标签: zsh

解决方案


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

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

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


推荐阅读