2

我有一个监视工具,它检查 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

有一个更好的方法吗?

4

1 回答 1

2

或者,您可以使用 case 语句:

case $(runlevel) in
2)
    # do health check
    ;;
s)
    # do other things
    ;;
*)
    # skip doing anything
    ;;
esac

[[ ]]在 bash 中也建议使用 using [ ],因为它不会使用 IFS 拆分变量的值并使它们受到路径名扩展的影响。

if [[ $(runlevel) == 2 ]]

==在某种程度上也比单个更具可读性,=但在添加全局模式时要小心。

于 2013-09-20T20:19:41.153 回答