我一次又一次地看到Bash在Stack Overflow上使用eval的答案,并且答案得到了抨击,双关语是为了使用这种"邪恶"结构.为什么eval这么邪恶?
如果eval不能安全使用,我应该使用什么呢?
为什么会这样呢?
timeout 10s echo "foo bar" # foo bar
Run Code Online (Sandbox Code Playgroud)
但这不会
function echoFooBar {
echo "foo bar"
}
echoFooBar # foo bar
timeout 10s echoFooBar # timeout: failed to run command `echoFooBar': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它发挥作用?
我需要在OpenWRT中执行带超时的命令,但似乎默认情况下没有安装命令超时,也不能使用opkg安装.我知道我可以做一个工作(使用命令&; sleep $ DELAY; kill $!),但我希望更好地做到这一点,而不会在超时之前命令完成时尝试杀死进程的冒险.