Для цикла, не дающего ожидаемый результат в bash - PullRequest
0 голосов
/ 29 августа 2018

Я создал скрипт для поиска нескольких строк из файла. Но получение длинного выхода, который не требуется. И хотел получить следующий вывод. Например: если все строки совпадают, echo All nodes are UP else WEB1 WEB2 down В случае, если WEB1 и WEB2 не найдены в этом файле.

Ниже приведен мой скрипт вместе с выводом:

arr=("WEB1" "WEB2" "WEB3" "WEB4" "WEB5" "WEB6" "WEB7" "WEB8" "WEB9" "WEB10" "pro-webs3")

for i in ${arr[@]}
do
  if grep -w "$i" Filename >> /dev/null
then
echo $i >> /dev/null
echo "node are up"
else
echo "$i Node is down"
fi
done

Выход:

WEB1 Node is down
All nodes are up
All nodes are up
All nodes are up
All nodes are up
All nodes are up
All nodes are up
All nodes are up
All nodes are up
All nodes are up
pro-webs3 Node is down

1 Ответ

0 голосов
/ 29 августа 2018

Создайте массив неисправных узлов и действуйте соответствующим образом: перечислите узлы, если они не пусты.

arr=("WEB1" "WEB2" "WEB3" "WEB4" "WEB5" "WEB6" "WEB7" "WEB8" "WEB9" "WEB10" "pro-webs3")
failed=()

for i in "${arr[@]}"
do
  if ! grep -q -w "$i" Filename
  then
    failed+=("$i")
  fi
done

if [ "${#failed[@]}" -eq 0 ]
then
    echo "All nodes are UP"
else
    echo "${failed[@]} DOWN"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...