Что такое bash-эквивалент всего Python?
В части сценария bash, которую я пишу, я хотел бы проверить, не задана ли какая-либо из переменных в списке.
В Python есть встроенная функция all
это возвращает 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
... но, возможно, есть более оптимальный способ проверить это?
2 ответа
for
цикл это способ сделать это; нет аналога all
построить в bash
,
Документы Python показывают, что они эквивалентны: http://docs.python.org/2/library/functions.html
Помните, bash
Он был разработан, чтобы хорошо выполнять одну вещь (операции с оболочкой), поэтому, если вам постоянно нужны конструкции более высокого уровня, подумайте о выборе более полнофункционального языка, если можете.
Ты пытался a && b && c && ...
? Звучит наиболее интуитивно для меня...