複数のコマンドを並行して実行したいのですが、次のコードが機能しない理由がわかりません。
#!/bin/bash
( ping 8.8.8.8 )
( ping 192.168.0.1 )
2番目のpingコマンドは完全に無視されます。どうしてこんなことに?
編集:OK、&
を実行することでそれらを並行して実行できることがわかりました。
ping 8.8.8.8 & ping 192.168.0.1
しかし、なぜ上記のコード部分が機能しなかったのですか?
サブシェルはデフォルトではフォークされていません。また、最初のサブシェルが終了するのを待たずに2番目のサブシェルを実行するには、サブシェルをバックグラウンドに送信するために&
を使用する必要があります。
例えば.
ping 8.8.8.8 & ping 192.168.0.1