在我写的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
...但也许有更优化的方法来检查这个?
答案 0 :(得分:3)
for
循环是这样做的方法; all
中没有等效的bash
构造。
Python文档显示这些是等效的:http://docs.python.org/2/library/functions.html#all
请记住,bash
旨在很好地完成一件事(shell操作),所以如果您发现自己经常需要更高级别的结构,请考虑选择功能更全面的语言。
答案 1 :(得分:0)
你试过a && b && c && ...
吗?听起来对我来说最直观......