ラベル bash の投稿を表示しています。 すべての投稿を表示
ラベル bash の投稿を表示しています。 すべての投稿を表示

2012-02-07

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

先日の指定桁数の0付き数字を返すロジック(例:000123)をcase文で書いたもの(http://trilf2.blogspot.com/2012/02/bashx0.html)を別の書き方で書いてみた。スマートにはならなかったが。
引数1が、表示したい数字(777など)。引数2が、作りたい数字の桁数(000777なら6)。

#!/bin/bash
_NUM=$1
_FIG=$2
_EXE=0
if [ ${_FIG} -ge ${#_NUM} ];
then
    _CNT=`expr ${_FIG} - ${#_NUM}`
else
    echo "Error"
    exit 8
fi
while [ ${_EXE} -lt ${_CNT} ]
do
   _EXE=`expr ${_EXE} + 1`
   _NUM2=${_NUM2}'0'
done
_NUM3=${_NUM2}${_NUM}
echo ${_NUM3}



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

   

2012-01-25

[bash]指定回数実行するシェル

いつも、ハナから書いて面倒なのでメモしておく。
引数に繰り返したい回数を指定して繰り返し実行するシェル。

#!/bin/bash
if [ $? = 0 ];
then
echo "引数を指定してください。"
fi
i=$1
cnt=0
while [ $cnt -le $i ];
do
        (※実行させたいコマンドをここに書く)        cnt=$(( $cnt + 1 ))
done

2012-01-05

[mac]macのvmstat

Linux,Unixだと使えるvmstatが、macだとvm_statじゃないとダメだった。
しかも、出力結果が違う。

vm_statの方は、CPUの空き状態とか出してくれない模様。

vm_statの出力例
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                           3107.
Pages active:                       258080.
Pages inactive:                     126741.
Pages speculative:                    2062.
Pages wired down:                    68315.
"Translation faults":             22750424.
Pages copy-on-write:                410932.
Pages zero filled:                11072120.
Pages reactivated:                  662675.
Pageins:                            953264.
Pageouts:                           115290.
Object cache: 14 hits of 510507 lookups (0% hit rate)
なんで、bashなのに違うのか。ややこしい。