同じ.sasジョブの繰り返しパラメータを送信したいのですが、以前のジョブが完了した後にのみジョブを送信したいと思います。私の試みは次のとおりです。
#!/bin/ksh
export weeks="1 2 3"
for week in $weeks
do
sas -log job$week.log job.sas > /dev/null & pid_ind=$!
wait $pid_ind
echo "job complete for week $week"
done
これにより、すべてのジョブがほぼ同時に送信され、キューに入れられます。誰でも "wait"コマンドについて詳しく説明できますか?最後のSAS操作が完了するまでコミットを延期しようとしています。十分、提出していない。
答え1
バグがあります。 forループはdone
代わりにキーワードで終了しますfi
。
for variable in lists
do
# do something here
done
答え2
「wait」コマンドを削除すると、役に立ちません。また、「&pid_ind = $!」このコードを削除すると、タスクがバックグラウンドプロセスに切り替えられ、問題が発生します。
デーモンの外部(およびバックグラウンドで開始されたプロセス)では、スクリプトのコマンドが同期されます。各コマンドは、最後のコマンドが完了するのを待ちます。
#!/bin/ksh
weeks="3 4 5"
echo "Waiting for first job to complete..."
for week in $weeks; do
sas -log job$week.log job.sas > /dev/null
echo "job complete for week $week"
done