arrays - Python 的 all 等价于 bash 的是什么?

标签 arrays bash variables truthiness

在我正在编写的 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/

相关文章:

c++ - 如何根据数组元素自动创建模板类的元组?

c - c中的qsort问题

linux - 如何使用 bash 脚本或终端从 ubuntu 卸载所有 USB 笔式驱动器?

linux - 管道sed不使用ngrep输出到文件

c++ - 如何在 C++11 中将元组转换为字节数组

arrays - 使用 SwiftyJSON 将数组转换为 JSON

bash - yq - 添加多行字符串

php - 在 PHPDoc 中声明局部变量的属性

javascript - for 循环中后增量运算符的不同结果

java - 实例变量如何影响我的构造函数的值?