0

いくつかの関数が戻ることを確認するスクリプトを作成しようとしています。戻り値が 1 の場合は、ログ ファイルに書き込み、メールを送信しますが、ループが期待どおりに機能しません。

  1. 成功した場合は、すべて良いものを印刷します
  2. 更新が失敗した場合、ログに「失敗」と「完了」の 2 行が書き込まれ、メールが送信されます。

間違いを見つけるのを手伝ってくれませんか?

w2log() {
if [[ $? = 0 ]] ; then
   echo "=== Everything looks good ! DONE `date` ==="  >> $LOG;
else
   echo "=== Something went wrong ! FAILED `date` ==="  >> $LOG && errmail
fi
}

updaterepos() {
   syn6332
   syn5864
   for repo in syn6332 syn5864; do
      w2log
   done
}

updaterepos
4

1 に答える 1

1

w2logおそらくそのようなものです(各コマンドのレポートが必要な場合):

updaterepos() {
    for repo in syn6364 syn5864 ; do
        $repo
        w2log
    done
}

関数チェック$?は、コマンドがステータスを返した直後に呼び出す必要があります。関数呼び出しも設定されます。これが、2 回目$?に呼び出したときに 2 番目の「完了」行が表示された理由ですw2log

于 2013-01-18T13:27:57.480 に答える