什么是Python的bash相当于什么?

时间:2013-09-16 23:31:48

标签: arrays bash variables truthiness

在我写的bash脚本的一部分中,我想检查列表中的任何变量是否未设置。

在Python中,如果iterable中的所有元素都为真,则会有一个内置函数all返回True

>>> all([True, 1, "foo"])
True
>>> all([False, 1, "bar"])
False

bash中有类似的东西吗?目前我这样做的方法是循环遍历每个变量并设置变量/中断循环,如果它遇到一个null或空字符串的变量,例如。

$ 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

...但也许有更优化的方法来检查这个?

2 个答案:

答案 0 :(得分:3)

for循环是这样做的方法; all中没有等效的bash构造。

Python文档显示这些是等效的:http://docs.python.org/2/library/functions.html#all

请记住,bash旨在很好地完成一件事(shell操作),所以如果您发现自己经常需要更高级别的结构,请考虑选择功能更全面的语言。

答案 1 :(得分:0)

你试过a && b && c && ...吗?听起来对我来说最直观......