bash で複数のコマンドを実行したいのですが、そのうちのいくつかはバックグラウンドで実行したいです。これを説明する最良の方法は、機能しない次のコマンドを使用することです...
for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand
これは 2 つの質問として捉えられると思います:
- コマンド内の & を終了するにはどうすればよいですか?
- これを解決するには、どのような方法が良いでしょうか?
その他の重要な詳細:
- OpenSUSE 13.2
- gnomeシェル
答え1
試してみてください
(sleep 5; ls) & echo "Now"
これは希望通りに動作します。
答え2
必要なのは、;
. を削除することだけです。. は&
それ自体がコマンド区切り文字として機能するため、;
その後に追加するのは無効です。
(sleep 30; command1; command2 param ) & anotherCommand
(セミコロンの後のスペースは必要ありません。この方が読みやすいからです。これは、シェル構文でスペースがオプションである数少ない場所の 1 つです。ほとんどの場所では、スペースは必須または禁止されています。)
これを実行するより良い方法については、実際に何をしようとしているかによって異なります。より良い提案を行うには、より多くの情報が必要です。