运行 oneliner 后台命令

Run command in background in oneliner

我不确定这些类型的语句叫什么,但基本上我正在尝试这样做:

[ "string" = "somethingelse" ] && dofuncwhentrue "param" || dofuncwhenfalse "param" &

所以这两个函数都应该在后台 运行,但我不确定将 & 放在哪里才能实现这一点。

谢谢!

如果您尝试单行代码的简单版本,您会看到这种行为。

/bin/true && sleep 10 || sleep 10 &
/bin/false && sleep 10 || sleep 10 &
sleep 10 && sleep 10 || sleep 10 &

在所有情况下,您会看到 bash 立即将所有内容(包括测试)生成到后台。

如果你真的想在前台 运行 测试,你可以用括号来构造行。

sleep 10 && (sleep 10 &) || (sleep 10 &)

正如 Inian 在评论中指出的那样,使用 if 会更具可读性,但这是一个有趣的问题!