0

我们使用 udeploy 进行频繁的部署,并且我们有一个 shell 脚本来重新启动 apache http 服务器作为最后一个任务。脚本很简单:-

cd bin_path
sudo ./apachectl -k stop
sleep 5
sudo ./apachectl start
while [ $? -ne 0 ]
do 
    sudo ./apachectl start
    sleep 1
done

现在我想在这个 while 循环中包含一个额外的条件,用于检查计数器变量的某个值,以便重新启动服务器的尝试仅限于说 5 次。现在这就是我想要的。

var = 0
sudo ./apachectl start
while [ $? -ne 0 -o $var lte 5 ]
do
    var = $((var+1))
    sudo ./apachectl start
    sleep 1
done

但不知何故,我不是 shell 脚本语法方面的专家。如果有人可以帮助我更正脚本以实现所需的解决方案。

4

2 回答 2

2

你有几个问题。

  1. Shell 变量赋值在 . 周围没有空格=
  2. 您的while循环正在测试 的状态sleep,而不是sudo
  3. 您在or应该使用and组合条件时使用。
  4. 比较test需要一个-前缀。

正确的脚本应该是:

var=0
while ! sudo ./apachectl start && [ $var -le 5 ]
do
    var=$((var+1))
    sleep 1
done
于 2016-08-30T20:45:55.940 回答
0

当单行“apachectl restart”完成同样的事情时,“修复”脚本似乎是徒劳的。

于 2016-08-30T20:47:22.460 回答