Извлечь определенное значение из столбца и выйти из цикла - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу извлечь столбец dispstatus из команды ниже, и если все записи ЗЕЛЕНЫЕ, тогда я должен выйти из l oop.

sapcontrol -nr 01 -function GetProcessList

17.02.2020 01:40:34
GetProcessList
OK
name, description, dispstatus, textstatus, starttime, elapsedtime, pid
disp+work, Dispatcher, GREEN, Running, 2020 02 16 03:50:28, 21:50:06, 59404
igswd_mt, IGS Watchdog, GREEN, Running, 2020 02 16 03:50:28, 21:50:06, 59405
gwrd, Gateway, GREEN, Running, 2020 02 16 03:50:30, 21:50:04, 59423
icman, ICM, GREEN, Running, 2020 02 16 03:50:30, 21:50:04, 59424

На данный момент я использовал команду ниже, где вместо Получая все значения, я проверяю количество ЗЕЛЕНЫХ и завершаю работу, что в настоящее время не то, что я намерен сделать. Не могли бы вы помочь мне?

while true ; do status=`sapcontrol -nr 01 -function GetProcessList |awk -F ',' '{if ($3) print $3;}'|grep -i GREEN | wc -l`; sleep 2; if [[ $status -ge 2 ]]; then break ;fi; done

РЕДАКТИРОВАТЬ: некоторые команды в разных строках.

while true ; do
   status=`sapcontrol -nr 01 -function GetProcessList |
      awk -F ',' '{if ($3) print $3;}'|
      grep -i GREEN |
      wc -l`
   sleep 2
   if [[ $status -ge 2 ]]; then
      break
   fi
done

Спасибо, Anup

1 Ответ

0 голосов
/ 17 февраля 2020

Попробуйте это

while true ; do
    status=$(sapcontrol -nr 01 -function GetProcessList)
    case $status in
        *GREEN*GREEN*GREEN*GREEN*) break;;
    esac
done
...