'
가끔 가다가 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
'unix and linux' 카테고리의 다른 글
[mac] macos에서 불필요하게 포트를 Listen 하는 프로세스 발견하기 (0) | 2014.10.22 |
---|---|
[bash] seq를 이용하여 서버목록에 ssh 명령 실행하기 (0) | 2014.10.14 |
쉘에서 pipe 사용시 빨리 실행을 하도록 지원 - stdbuf (0) | 2014.08.27 |
mac과 linux(ubuntu)에서 환경변수 JAVA_HOME 지정하기 (0) | 2014.08.27 |
linux screen (0) | 2014.08.27 |