Что такое 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 && ...? Звучит наиболее интуитивно для меня...

Другие вопросы по тегам