如果命令10秒钟不输出任何内容,如何退出命令?

时间:2019-01-08 14:54:46

标签: shell

我想使用变量“ a”中的IP SSH。如果一切正常,这很好。 但是,如果我的命令“ commandToGetIP”卡在网络中,或者有任何可能不会返回任何输出,我的脚本将处于挂起状态。 现在,我需要获取的是此命令“ commandToGetIP”应仅等待10秒钟,然后发出一些消息

a = commandToGetIP <DeviceID> ssh $ a

我想使用变量“ a”中的IP SSH。如果一切正常,这很好。 但是,如果我的命令“ commandToGetIP”卡在网络中,或者有任何可能不会返回任何输出,我的脚本将处于挂起状态。 现在,我需要获取的是此命令“ commandToGetIP”应仅等待10秒钟,然后发出一些消息

1 个答案:

答案 0 :(得分:1)

因此,bash有一个内置命令来使另一个命令超时。如果该命令花费的时间太长,超时将用退出代码143杀死它。使用此信息,我在执行ssh命令之前检查退出代码是否为 not 143。否则,当commandToGetIP花费的时间太长时,它将做您想做的任何事情。

timeout 10 commandToGetIP <DeviceID> | read ip
result=$?
if [ "$result" != "143" ]; then
    ssh $ip
else
    # What we do if it times out
fi