我有一个监控工具,用于检查TCP端口,然后在端口未监听时发出警报。我希望使运行状况检查更加智能,以便在系统关闭/重新启动时不会发出警报。我正在考虑做这样的事情:
#!/bin/bash
if [ "$(runlevel)" = "2" ] #I use "=" instead of "-eq" because runlevel might be "s"
then
#do health check
else
#skip health check
fi
有更好的方法吗?
答案 0 :(得分:2)
或者您可以使用案例陈述:
case $(runlevel) in
2)
# do health check
;;
s)
# do other things
;;
*)
# skip doing anything
;;
esac
建议在bash中使用[[ ]]
而不是[ ]
,因为它不会将变量的值与IFS分开并使它们受路径名扩展的影响。
if [[ $(runlevel) == 2 ]]
==
在某种程度上也比单=
更具可读性,但要小心添加glob模式。