シェルに多くのコマンドを送信し、コマンドが完了するのを待つ方法

シェルに多くのコマンドを送信し、コマンドが完了するのを待つ方法

20個程度のコマンドがありますが、すべてUnixシェルに送信して結果をコピーする必要がありますが、方法がわかりません。

モバイルネットワーク管理に接続されたアプレットなので、どのシェルがあるのか​​わかりません。このアプレットを介して行を介してコマンドを送信し、悲鳴を上げて結果を受け取ることができるため、スクリプトを使用してコマンドを送信することはできません。

コマンド1- サーバーに接続します。

コマンド1が完了するまで待ちます。

コマンド2- 1番サーバーのすべての情報更新完了

待つ。

コマンド3。いくつかのパラメータを取得します。

...そしてさらに多くのコマンドがあります。

試験を終えたそしてcmd1 | cmd2 | cmd3 そして cmd1 & cmd2 & cmd3そしてcmd1;cmd2

問題は、cmd1RNC(ネットワーク要素)に接続されているが、cmd2理解されるまでに約15秒ほどかかるという点だ。ただし、最初のコマンドにのみ適用されます。これを実行する方法についての手がかりはありますか?

答え1

通常はcmd1;cmd2;cmd3;cmd4(1行に書きたい場合)、またはcmd1 && cmd2 && cmd3 && cmd4cmd2が失敗したときにcmd3を実行したくない場合です。

あるいは、;1行に1つのコマンドのみを作成することもできます。

cmd1
cmd2
cmd3
cmd4

コマンドをバックグラウンドで並列に実行するには、次を使用することもできます。

cmd1 &
cmd2 &
cmd3 &
cmd4 &
wait # for cmd1-4 to finish

これらの方法の1つをシェルスクリプトに入れることができます。シェルスクリプトに書き込む内容は、実際のシェル自体に書き込むものとほとんど区別できません。

答え2

sleep環境が許可している場合は、これを調べることもできます。全体の順序は次のとおりですcmd1 && sleep 10s && cmd2
これは関連しています睡眠のためのマニュアルページ

答え3

次のように順番に実行されるコマンドを含むファイルであるスクリプトを使用します。

#!/bin/sh

command-01
command-02
...
command-20

最初の行(shebang)は、次のコマンド()を実行して/bin/shファイルを実行可能にしてchmod u+x your-little-scriptから実行できることを示します./my-little-script。これを行うと、1つのステップも見逃せません ;-)

完全なプログラミング言語を提供するシェルのドキュメントをお読みください。bash(1)これが利用可能であることを確認し、それ以外の場合はKornシェルを確認してくださいksh(1)。これは、スクリプトから(または対話的に)制御フローを制御するのに役立つ多くの機能を提供します。

答え4

expectローカルコンピュータで同様のコマンドを実行して、転送cmd1する前に転送が完了するのを待つことができますcmd2。正しいコマンド期待スクリプトを作成するには、合理的な待ち時間またはコマンドが完了したことを示す特定の出力を計算する必要があります。

もちろん、cmd1; cmd2; cmd3; cmd4命令内では命令が順次実行される。

関連情報