조건이 있는 경우 grep을 반복합니다. [닫기]

조건이 있는 경우 grep을 반복합니다. [닫기]

누구든지 나를 도와줄 수 있나요?

쉘 스크립트 작성을 시작하려고 하는데 이 문제에 대해 혼란스럽습니다. "adb shell ps" 명령이 필요 grep하고 이름이 있는 3개의 프로세스를 찾습니다.

  1. 공정 1
  2. 공정 2
  3. 공정 3

grep이러한 프로세스가 출력 에 나타나면 스크립트를 계속 사용하고, 그렇지 않으면 grep30초 간격으로 5번 확인하십시오. 마지막으로 - 프로세스가 시작되지 않으면 양식 스크립트를 종료하세요.

답변1

다음은 귀하가 찾고 있다고 생각되는 스크립트입니다.

#!/bin/bash

cnt=1; found=0;
while [ "$cnt" -le 5 ]; do
  echo "chk#: $cnt"
  if [[ $(pgrep -f "proc1") && $(pgrep -f "proc2") && $(pgrep -f "proc3") ]]; then
    found=1
    break
  fi
  let cnt=cnt+1
  sleep 6
done

[ "$found" -eq 0 ] && exit

echo "found them"

proc1, proc2 및 proc3이 프로세스의 실제 이름인 경우 이 줄을 변경할 수 있습니다. 위의 명령줄에서 이러한 문자열이 나타나는지 찾습니다.

  if [[ $(pgrep "proc1") && $(pgrep "proc2") && $(pgrep "proc3") ]]; then

pgrep이 명령은 기본적으로 단일 명령으로 실행될 수 있으므로 스크립트는 대신을 사용합니다 grep.ps .. | grep ...

관련 정보