我很新的shell腳本和學習它。我得到了監控apache的代碼。該文件的名稱是test.sh
。我改了一下代碼。這是什麼意思[:-ge:意外的運算符,在bash中?
我一直在尋找的是,當我這樣做:
./test.sh -H localhost -wr 2 -cr 5 -arg cpu_load
應該爲它的cpu_load
測試Apache。即我試圖用我的-arg
參數控制監控apache。
但是,這似乎並沒有工作。
當我運行此:
./test.sh -H localhost -wr 2 -cr 5 -arg cpu_load
我得到的錯誤:
./test.sh: 282: [: -ge: unexpected operator
./test.sh: 286: [: -ge: unexpected operator
下面是代碼的某些部分:
#!/bin/sh
while test -n "$1"; do
case "$1" in
--help|-h)
print_help
exit $ST_UK
;;
--version|-v)
print_version $PROGNAME $VERSION
exit $ST_UK
;;
--hostname|-H)
hostname=$2
shift
;;
--port|-P)
port=$2
shift
;;
--timeout|-t)
timeout=$2
shift
;;
--remote-server|-R)
remote_srv=1
;;
--binary_path|-b)
path_binary=$2
shift
;;
--pid_path|-p)
path_pid=$2
shift
;;
--pid_name|-n)
name_pid=$2
shift
;;
--status-page|-s)
status_page=$2
shift
;;
--secure|-S)
secure=1
;;
--warning-req|-wr)
warn_req=$2
shift
;;
--critical-req|-cr)
crit_req=$2
shift
;;
--userargument|-arg)
user_arg=$3
shift
;;
*)
echo "Unknown argument: $1"
print_help
exit $ST_UK
;;
esac
shift
done
#other codes
if [ ${wclvls_req} = 1 ]
then
if [ ${user_arg} -ge ${warn_req} -a ${user_arg} -lt ${crit_req} ]
then
echo "WARNING - ${output} | ${perfdata}"
exit $ST_WR
elif [ ${user_arg} -ge ${crit_req} ]
then
echo "CRITICAL - ${output} | ${perfdata}"
exit $ST_CR
else
echo "OK - ${output} | ${perfdata}"
exit $ST_OK
fi
else
echo "OK - ${output} | ${perfdata}"
exit $ST_OK
fi
fi
在那裏我做了錯誤?
在此先感謝。