Linux 如果子进程(命令&;)中发生错误,则显示Bash chek

Linux 如果子进程(命令&;)中发生错误,则显示Bash chek,linux,bash,unix,scripting,Linux,Bash,Unix,Scripting,我从bash脚本运行mongodb实例,如果mongo由于某种原因在启动过程中崩溃,我需要显示一条用户友好的消息 所以我有这样的代码 eval 'mongod --dbpath=$ABS_MONGO_DATA_PATH &' || printf "something bad happened" 但使用这种表示法,错误处理程序从未调用过。但是,如果我删除&sing,那么在mongo初始化之后,由于mongod进程正在等待信号,进一步的脚本将不会运行 我如何解决该问题?您不需要为此进行ev

我从bash脚本运行mongodb实例,如果mongo由于某种原因在启动过程中崩溃,我需要显示一条用户友好的消息

所以我有这样的代码

eval 'mongod --dbpath=$ABS_MONGO_DATA_PATH &' || printf "something bad happened"
但使用这种表示法,错误处理程序从未调用过。但是,如果我删除
&
sing,那么在mongo初始化之后,由于mongod进程正在等待信号,进一步的脚本将不会运行


我如何解决该问题?

您不需要为此进行
eval

{ mongod --dbpath="$ABS_MONGO_DATA_PATH" ||
   printf "something bad happened"; } &
不要只在后台运行
mongod
,而是在后台运行整个命令列表。