'

가끔 가다가 curl로 모니터링을 위해 해당 숫자의 값을 받고 처리를 하는 로직에서 변수의 값이 숫자로 변환이 안되는 경우가 발생할 수 있다. bash는 no type이나 공백이 있으면 숫자가 포함되어도 arithmetic 을 할 수 있도록 지원하지 않는다. 


activeThreadCount=`curl -s http://www.google.com/activeThreadCount`

declare -i activeThreadCount

if [[ $activeThreadCount -gt $THRESHOLD ]]; then  # 이곳에서 에러 발생

  echo "dump"

else

  echo "no loger dump"

  exit -1

fi


자세히 보면 "5"가 아니라 스페이가 들어간 "5 " 가 들어가서 number 처리가 되지 않았다. 

((: 8 -gt 5 : syntax error in expression (error token is "5 ")


삽집을 피하기 위해서 length을 얻어보고 tr로 trim을 해보는 것도 좋은 듯 하다. (trim() 함수를 늘 만들어서 쓰는 것도 좋을듯 하다. 과거에는 늘 이렇게 작업했는데. 이제는 기억도 안나..ㅠㅠ)



tc=`curl -s http://www.google.com/activeThreadCount`

echo "length: ${#tc}"

activeThreadCount=`echo $tc | tr -d ' '`


if [[ $activeThreadCount -gt $THRESHOLD ]]; then

  echo "dump"

else

  echo "no loger dump"

  exit -1

fi


Posted by '김용환'
,