0

コマンドラインからアプリを起動し、STDOUT および STDERR 出力を /dev/null にリダイレクトする単純な bash スクリプトを作成しようとしています。また、スクリプトが失敗した場合にフィードバックを提供する機能も含めたいと考えています。

スクリプトはほとんど機能しますが、アプリをバックグラウンドで起動できません。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
4

1 に答える 1

2

さて、あなたはアプリケーションを 2 回起動していますが、最初の 1 つがハングしていると思います。出力を grep にパイプして存在するかどうかを確認しているときにです。アプリケーションを起動する代わりに、最初にプログラムが存在するかどうかを確認するために、Bash スクリプトからプログラムが存在するかどうかを確認します。

于 2012-09-27T21:40:12.707 に答える