次のメッセージが表示される理由: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 ]

1つ目は、私が思うものと全く異なるものとしてしきい値を設定します。主に文字列を引用しなかったためですが、部分的には意味$論的に理解されていない文字列があるためです。

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

私が欠けているコードは、実際には比較ではなく比較を実行できるように...設定します。used_space=97テスト出力を>ファイルにリダイレクト=した後、テストの一部として以下を評価します。

[ 97 6% ]

吐き出したもの-bash: [: 97: unary operator expected。あなたは-ge運送業者を探しているかもしれません(利用可能な運送業者の詳細を確認または入手するman bashこともできます)。man test

関連情報