如何在bash中组合timeout和eval命令

Wak*_*nka 5 bash timeout eval

对于执行存储在变量中的eval命令,使用命令:

???> a="echo -e 'a\nb' | wc -l"
???> eval $a
2
Run Code Online (Sandbox Code Playgroud)

但它如何与timeout命令结合?我试过以下哪个给了我错误的输出:

???> timeout 10 $a
'a
b' | wc -l
Run Code Online (Sandbox Code Playgroud)

以下给出了我的错误:

???> timeout 10 "$a"
timeout: failed to run command `echo -e \'a\\nb\' | wc -l': No such file or directory

???> timeout 10 $(eval $a)
timeout: failed to run command `2': No such file or directory

???> timeout 10 $(eval "$a")
timeout: failed to run command `2': No such file or directory
Run Code Online (Sandbox Code Playgroud)

问题还可以解决:我怎样才能确定以下命令是否正确执行?

timeout 10 "$PROGRAM" "$OPT1" "$OPT2" ...
Run Code Online (Sandbox Code Playgroud)

小智 1

这会起作用

if timeout "$PROGRAM" "$OPT1" "$OPT2" ... ; then
    echo Program ran successfully
else
    echo Program terminated due to timeout
fi
Run Code Online (Sandbox Code Playgroud)