Linux bash:如果程序挂起并且回显'超时',则超时程序

1 linux bash grep timeout

我有一个打印出通过或失败的程序.我想检测挂在那里的程序并回显'超时'

我写了一个这样的脚本:

#!/bin/bash

echo -n 'test' && timeout 5 ./mytest | grep -q -i 'passed' && echo ', passed'|| echo ', failed'

if [ $? -eq 124 ]; then
    echo 'timeout'
fi
Run Code Online (Sandbox Code Playgroud)

但它会把程序挂在那里作为"失败"并杀死程序.任何建议将不胜感激.谢谢!

kay*_*lum 5

男子超时:

NAME
       timeout - run a command with a time limit

SYNOPSIS
       timeout [OPTION] DURATION COMMAND [ARG]...
       timeout [OPTION]

DESCRIPTION
   Start COMMAND, and kill it if still running after DURATION.
...
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

cmd_output=`timeout 5 ./mytest`

if [ $? -eq 124 ]; then
    echo 'timeout'
else
    echo $cmd_output
fi
Run Code Online (Sandbox Code Playgroud)