Bash:无法在IF-THEN-ELSE-FI内启动后台进程

时间:2012-09-27 21:32:02

标签: bash if-statement background-process

我正在尝试创建一个简单的bash脚本,它将从命令行启动应用程序并将STDOUT和STDERR输出重定向到/ dev / null。我还希望包含在脚本失败时提供反馈的功能。

该脚本几乎可以使用,但我无法在后台启动应用程序。我试过使用nohup,disown,将if语句包装在“(if ... fi)&”中,将else语句包装在“{...;}&”中,但我尝试的所有内容都已经介绍新问题或根本没有问题。

有什么建议吗?

以下是我正在做的基本版本:

#!/bin/bash
read -p "Enter program name: " APP
if 
  $APP 2>&1 | grep -q "command not found"
then
  echo "That didn't work."
else
  $APP >/dev/null 2>&1 &  
fi

1 个答案:

答案 0 :(得分:2)

嗯,你正在启动应用程序两次,我认为第一个是悬挂的,当你通过将它的输出管道输出到grep来检查它是否存在时。您可能希望执行类似Check if a program exists from a Bash script之类的操作来检查它是否存在而不是启动应用程序。