2012-02-03

[bash]X桁の0付きの数字を作成する

これもよく使うのでメモ。

ファイルに記載された、0000024などの7桁の数字に1足して0付きで返すサンプル。
サンプルでは、変数_TEMPFILE内に記載された最終行の数字を最後の番号として1進めて、もし9999999に達したら0000001に戻るという仕様にしている。もっとスマートな書き方はあると思うが泥臭くcase文を使用して作成。

変数説明
_TEMPFILE ・・・ 加算する元になる数字を1行単位で記載しているファイル
_TEMP1、_TEMP2 ・・・ 作業用変数
_OUTPUTNUM ・・・ 加算後の数字

if [ -s ${_TEMPFILE} ];
then
       _TEMP1=`tail -1 ${_TEMPFILE}`
       if [ ${_TEMP} == "9999999"];
      then
             _TEMP2="0000001"
      else
             _TEMP2=`expr ${_TEMP1} + 1`
      fi
case ${#_TEMP2} in
      1) _OUTPUTNUM="000000${_TEMP2}"
      echo ${_OUTPUTNUM} >> ${_TEMPFILE} ;;
      2)  _OUTPUTNUM="00000${_TEMP2}"
      echo ${_OUTPUTNUM} >> ${_TEMPFILE} ;;
      3)  _OUTPUTFILENUM="0000${_TEMP2}"
      echo ${_OUTPUTNUM} >> ${_TEMPFILE} ;;
      4)  _OUTPUTFILENUM="000${_TEMP2}"
      echo ${_OUTPUTNUM} >> ${_TEMPFILE} ;;
      5)  _OUTPUTNUM="00${_TEMP2}"
      echo ${_OUTPUTNUM} >> ${_TEMPFILE} ;;
      6)  _OUTPUTNUM="0${_TEMP2}"
      echo ${_OUTPUTNUM} >> ${_TEMPFILE} ;;
      7)  _OUTPUTNUM="${_TEMP2}"
      echo ${_OUTPUTFILNUM} >> ${_TEMPFILE} ;;
      *)  echo "Error!!"
esac
fi

   

0 件のコメント:

コメントを投稿