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
...
check
0 또는 "성공"을 반환 한 경우