2016-10-03 2 views
2

есть ли какой-либо конкретный способ проверить, является ли условие true on for loop и возвращает true. экс -как вернуть true в bash, если все условия успеха?

`

check_all_1_to_8_eq() 
{ 
for i in {1..8}; do 
     if [ a == $i ];then 
      return 0 
     else 
      return 1 
     fi 
done 
}` 

я хочу, чтобы проверить, если все 1 до 8 возвращает истину, то конец возвратной функции верно, если на из, если условие возврата ложно, то функция возвращать ложь. Пожалуйста, дайте мне знать, как решить этот тип скрипта.

+0

Также обратите внимание, что 'для i в {1..8} 'case' [a == $ i] 'всегда будет false. Но я полагаю, что 'a' является заполнителем, и он будет заменен чем-то вроде' $ a' ... – anishsane

ответ

3

Продолжить цикл, если условие выполнено успешно, и return вне цикла. Если условие не выполняется, return в этой точке:

check_all_1_to_8_eq() { 
    for i in {1..8}; do 
     if [ ! a == "$i" ]; then 
      return 1 
     fi 
    done 
    return 0 
} 

[ ! a == "$i" ] проверяет, если значение переменной i ($i) является не равна a.


Вы можете использовать оценку короткого замыкания, || (запускает команду после него, только если предыдущая команда не получится) тоже здесь мы будем делать проверку справедливости [ a == "$i" ]:

check_all_1_to_8_eq() { 
    for i in {1..8}; do 
     [ a == "$i" ] || return 1 
    done 
    return 0 
} 
Смежные вопросы