私のスクリプト(.ksh):
cmd1 & cmd2
cmd1
バックグラウンドで実行し、cmd2
起動後にのみ実行を開始したいと思います。cmd1
ただし、スクリプトを実行するとcmd2
以前に起動し、cmd1
問題が発生します。
この問題をどのように解決できますか?
ベストアンサー1
条件付き演算子を使用すると、&&
他の実行が開始される前に1つの実行が「完了」するように強制できます。 (「完了」は実際にプロセスをバックグラウンドで送信するため、「完了」を引用符で囲んでいます。)
しかし、
$ (echo "foo" &) ; echo "bar"
出力することができる
bar
foo
次のような
$ (echo "foo" &) && echo "bar"
出力されます
foo
bar
なぜなら、シェルは2番目のコマンドを実行する前に最初のコマンドの終了状態を決定する必要があるからです。