함수를 호출하고 값을 변수에 저장합니다.

함수를 호출하고 값을 변수에 저장합니다.
pid=`ps -ef | grep wcm2_wcm2appwlx | awk '$0!~/grep/ && $2~/[0-9]/{print $2}'`
for I in 1 2 3 4 5
do
sts=$(check)
  if [$sts eq / true/]
  then
        echo $I
        slp
  else
        break              #Abandon the loop.
  fi
done
slp(){
echo "sleep is executing "
}
check(){
if ps -p $pid > /dev/null
then
   echo " Backup Script is running with $PID "
   return true
fi
}

답변1

구문은 함수/프로세스의 종료 값 대신 변수 괄호 안에 코드를 var=$()저장합니다 . stdout종료/반환 값은 다음 위치에 저장됩니다.$?

sts에코 내용을 문자열로 테스트 하거나 $?예상 반환 값과 비교하여 확인할 수 있습니다. 내 bash에서는 true숫자 값만 반환할 수 없습니다.

[또한 주변의 공백과 및 공백 ]은 선택 사항이 아니므로 반드시 포함되어야 합니다. 그래서

sts=$(check)
if [[ "$sts" = *"is running"* ]]; then
    ...

또한 와일드카드 일치를 사용할 수 있도록 [[ ... ]]대신 사용했습니다.[ ... ]

당신은 또한 이것을 할 수 있습니다

if check; then
    ...

check0 또는 "성공"을 반환 한 경우

관련 정보