代码之家  ›  专栏  ›  技术社区  ›  YogeshR

如何在shell脚本中多次检查条件?

  •  -1
  • YogeshR  · 技术社区  · 7 年前

    我正在创建一个shell脚本,它检查在另一台计算机上运行的服务的状态,如果没有得到任何响应,则在本地系统上执行一些操作。我正在脚本中为此任务使用if子句。

    有时由于网络连接,它错误地假定远程服务器没有响应,并执行if子句中提到的任务。我想设置一个重试,这样当它在第一次尝试中没有找到任何响应时,它会多次检查条件是否正确。

    是否有任何方法可以像shell脚本中那样设置重试?

    下面是一个示例代码

    RSI1_STATUS=$(psql -U username -h serverip -d postgres -t -c "select version();" )
    
    
    if [ -z "$RSI1_STATUS" ]  #Condition will be true if remote server is not active
    then    
       touch /tmp/postgresql.trigger       
    fi
    

    现在,我要多次检查条件是否在第一次尝试中是真的。

    1 回复  |  直到 7 年前
        1
  •  2
  •   P.P    7 年前

    while

    retries=5
    while ! check_network_connection && ((--retries)); do
        sleep 1 # or probe the network, etc.
    done
    
    if [[ $retries -eq 0 ]]; then
        echo "Error: Connection retries exhausted."
    else
       # connection succeeded.
    fi
    

    retries