Bash:运行命令一段时间并获得其输出

时间:2017-03-08 21:34:10

标签: bash command-line command timeout strace

所以我试图运行一个捕获命令输出的脚本:

 echo 'password' | sudo -S strace -p14750 -s9999 -e write

约5秒钟,然后将输出存储到变量中。 我怎么能这样做?

完整脚本:

    appium_pid_output=$(echo 'password' | sudo -S strace -p$appium_device_pid -s9999 -e write)
    echo 'captured output of node '$appium_pid_output

    if [[ $appium_pid_output == *POST* ]]; then
        echo "device [ " + $device + " ] is currently in use"
        return 1
    fi

1 个答案:

答案 0 :(得分:0)

使用timeout命令。

var="$(timeout 5 whateverProducesTheOutput)"

缺点是超时对复杂命令不起作用。最简单的方法是编写一个函数并在超时时执行该函数(参见this answer)。

foo() {
    whateverProducesTheOutput
}
export -f foo
var="$(timeout 5 bash -c foo)"