在我正在编写的 bash 脚本的一部分中,我想检查列表中的任何变量是否未设置。
Python中有一个内置函数all
如果迭代中的所有元素都为 true,则返回 True
:
>>> all([True, 1, "foo"])
True
>>> all([False, 1, "bar"])
False
bash中有类似的东西吗?目前我这样做的方法是循环遍历每个变量并设置一个变量/如果遇到空值或空字符串的变量则跳出循环,例如
$ b=1
$ c=""
$ d=2
$ a=( b c d )
$ any_false=0
$ for var in ${a[@]} ; do if [[ -z ${!var} ]] ; then any_false=1 ; break; fi ; done
$ echo $any_false
1
...但也许有更优化的方法来检查这一点?
最佳答案
for
循环就是实现这一点的方法; bash
中没有等效的 all
构造。
Python 文档显示它们是等效的:http://docs.python.org/2/library/functions.html#all
请记住,bash
旨在很好地完成一件事(shell 操作),因此,如果您发现自己经常需要更高级别的构造,请考虑选择一种功能更齐全的语言(如果可以的话)。
关于arrays - Python 的 all 等价于 bash 的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18839038/