Bash:如何检查命令是否及时执行

时间:2017-10-24 17:56:33

标签: linux bash conditional-statements

我正在尝试在bash脚本中执行此命令expressvpn connect以在终端中执行。问题是有时连接需要很长时间,我想确保它不会花太多时间。我试过这个命令

some_command
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

但这是为了检查命令是否执行,而我想确保如果它没有被执行,比如说10秒,那么脚本必须从头开始停止并重新开始。我怎么做? 这是完整的代码

#!/bin/bash

expressvpn disconnect 

while (0<1); do
    expressvpn connect smart location
    xdg-open http://link 
    sleep 15 
    xdotool key Control_L+w  
    expressvpn disconnect  
    expressvpn refresh
done

我希望我很清楚。提前谢谢。

2 个答案:

答案 0 :(得分:1)

我希望你觉得它很有用。

timeout 15s expressvpn connect smart location>/dev/null &

答案 1 :(得分:0)

你可以简单地执行:

 timeout 15s expressvpn connect smart location

 case "$?" in
     0)   echo "OK"      ;;
     124) echo "TIMEOUT" ;;
     *)   echo "FAIL"    ;;
 esac

来自man timeout

退出状态:

  • 124 if命令超时
  • 如果超时本身失败,则
  • 125
  • 126如果找到命令但无法调用
  • 127 if if command not found
  • 137 if命令发送KILL(9)信号(128 + 9)