bash函数中的非阻塞nohup?

bash函数中的非阻塞nohup?,bash,blocking,nonblocking,nohup,Bash,Blocking,Nonblocking,Nohup,我几乎可以肯定我的以下问题有一个简单的解决方案: 我有一个bash脚本,比如blob.bash: #!/bin/bash function player_test(){ if [ "$(pidof someplayer)" ]; then # do some stuff exit 0 else nohup someplayer & exit 1 fi } if $(player_test); then echo

我几乎可以肯定我的以下问题有一个简单的解决方案:

我有一个bash脚本,比如blob.bash:

#!/bin/bash
function player_test(){
    if [ "$(pidof someplayer)" ]; then
      # do some stuff
      exit 0
    else
      nohup someplayer &
      exit 1
    fi
}

if $(player_test); then
  echo Message A
else
  echo Message B
fi
如果播放器正在运行,该方法返回,我得到消息A.Good。 如果它没有运行,它将启动。但是,只有在玩家退出且消息B延迟后,情况才会返回

背景: 我正在写一个脚本,它不断地将曲目输入音频节目的播放列表。在相应的函数中,当播放器尚未运行时,它将以nohup启动


最美好的祝愿…

命令仍然打开stdout和stderr。重定向到
/dev/null
,如下所示:

nohup someplayer &>/dev/null &

您的函数将立即返回。

player\u test
中使用
return
而不是
exit
,并且不要在命令替换中调用它。使用
if player\u测试;然后改为