다음 메시지가 표시되는 이유: 97: 이항 연산자가 예상됨 [닫기]

다음 메시지가 표시되는 이유: 97: 이항 연산자가 예상됨 [닫기]
#!/bin/bash
# Disk Space Monitoring for more than 96%
# Aand shuting down servers

# Declare Variebles
used_space=0
mount_point="/apps/"
threshold=$96%
DOMAIN_HOME=/apps/oracle/product/Middleware/user_projects/domains/cbs_idm_dom
EMAIL_ADDR=user@host
MW_BASE=/apps/oracle/product/Middleware
used_space=`df -k $mount_point | grep % | awk {'print $4'} | sed 's/%//g'`
#print "Free space available under \"$mount_point\" is `expr 100 - $used_space`%.\n"

if [ $used_space >= $threshold ]
echo $MESSAGE | mailx -s "Alert:Server disk is full - shutting down server." $EMAIL_ADDR
#sleep 60
then
#Shutdown OID in this host

# STOP

source $MW_BASE/wlserver_10.3/server/bin/setWLSEnv.sh

#STOP OPMN

#$MW_BASE/idm_inst/bin/opmnctl stopall > /apps/oracle/product/Middleware/scripts/logs/stop_idm_inst.log &

#$MW_BASE/idm_sync/bin/opmnctl stopall > /apps/oracle/product/Middleware/scripts/logs/stop_idm_sync.log &

#Stop Weblogic

$DOMAIN_HOME/bin/stopManagedWebLogic.sh wls_ods1 > /apps/oracle/product/Middleware/scripts/logs/stop_wls_ods2.log &

else
echo "INVALID OPTION"
fi;

답변1

오류의 원인은 이 줄 쌍입니다.

threshold=$96%
...
if [ $used_space >= $threshold ]

첫 번째는 내가 생각하는 것과 완전히 다른 것으로 임계값을 설정합니다. 주로 문자열을 인용하지 않았기 때문이지만 부분적으로는 $의미론적으로 이해되지 않는 문자열이 있기 때문입니다.

threshold=$96%
echo ">$threshold<"    # >6%<

내가 빠뜨린 코드는 실제로 비교가 아닌 비교를 수행할 수 있도록 ...설정합니다 . used_space=97테스트 출력을 >파일로 리디렉션 =한 후 테스트의 일부로 다음을 평가합니다.

[ 97 6% ]

뱉어낸 것 -bash: [: 97: unary operator expected. 귀하는 -ge운송업체를 찾고 있을 수 있습니다 ( 사용 가능한 운송업체에 대한 세부 정보를 확인하거나 얻을 man bash수도 있습니다).man test

관련 정보