bash 函数中的非阻塞 nohup?

Non-blocking nohup in bash function?

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

我有一个 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

如果玩家是 运行,方法 returns 并且我得到消息 A。很好。 如果不是运行,则启动。但是,条件只有returns玩家退出后消息B被延迟。

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

祝福...

nohup 命令仍然打开您的 stdout 和 stderr。像这样重定向到 /dev/null

nohup someplayer &>/dev/null &

和你的函数 returns 立即。