0

変数date2の最後に更新された値のみを取得しようとしていますが、常に出力に0が表示されます。これは、ブロックの外側で取得しているためだと思いますが、変数date2の最後の値ストアのみが必要です。この問題を解決するにはどうすればよいですか。ご協力ありがとうございます

ここに私のコードがあります

 count=0
 date1=0
 date2=0

 mysql -uroot -proot -Dproject_ivr_db -rN --execute "SELECT FeeSubmissionDate FROM     
 meritlist_date wHERE Discipline='phd' AND AnnounceDate<=now() " | while read value

 do
      if [[ "$count" == 0 ]]
      then
        let "date2=$value"
        let "count++"
      else
        let "date1=$value"
        let "result=$date1-$date2"
        if [[ "$result" -gt 0 ]]
        then
              let "date2=$date1"
        fi
      fi

  done

echo"V,date2=$date2"
4

1 に答える 1

0

AWKはこの問題を簡単に解決できます。これは、現在のディレクトリ内のすべてのファイルを一覧表示し、ファイル名の一部としてサブストリング「test」を含むファイルの数を返す簡単なスクリプトの例です。

#!/bin/bash

ls -1 |
awk 'BEGIN { count=0 } { if (index($0,"test") != 0) { count++ }} END { printf("Count=%s\n", count); }'

ここで、 ls -1mysqlコマンドに置き換え、上記のようにAWKをアナログ方式で使用するだけでwhileループを削除すると、対象の行を数えるのに問題はありません。

于 2013-02-21T11:58:18.620 に答える