@uskaritel

Как написать простой Bash цикл который будет сравнивать содержимое массивов?

Добрый день,
есть три массива. Первый с ID пользователя, два с одинаковым колличеством индексов но разными значениями, но только 0 или 1, это статус пользователя в разных системах, активен ли нет. Необходимо написать цикл(функцию) который будет сравнивать индексы массива по одному и делать что-то.
Например, если первом массиве индекс 1451 больше чем во втором, то напиши ID пользователя + итоговое значение сравния статуса из дух массивов True.
Делал что-то вроде этого но не работает.

for i in "{${#STATUS_AR[@]}}"; do
if [ "$STATUS_AR[$i]" -lt "$STATUS_AD_AR[$i]" ]; then
echo "True"
fi
done


Спасибо
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Hanharr
Писал такую штуку, чтобы из первого массива удалить элементы, которые есть во втором:

for USER in "${!USER_LIST[@]}"
do
    for EXCEPTION in "${EXCEPTION_LIST[@]}"
    do
        if [[ "${USER_LIST[USER]}" == "$EXCEPTION"* ]]
        then
            unset USER_LIST[$USER]
        fi
    done
done


Подозреваю, что в вашем случае будет цикл с двумя вложенными циклами.
Ответ написан
Комментировать
3vi1_0n3
@3vi1_0n3
ID_AR=( id1 id2 )
STATUS_AR=( 1 0 )
STATUS_AD_AR=( 1 1 )

for i in $(seq 1 ${#STATUS_AR}); do
        if [ ${STATUS_AR[$i]} -lt ${STATUS_AD_AR[$i]} ]; then
                echo ${ID_AR[$i]}: "True"
        fi
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы