入力チェック

BASHでも正規表現を使えるのだけど、入力された文字をチェックしようと思ったら「それはbashでは出来ません。perlやPHPを使いましょう」って事になるのが多い(--;

なんとか出来ないかいろいろ考えてみた。

半角英数の判定

入力された文字が英数のみか判定する方法

INPUT_DATA=$1

DATA_LEN=${#INPUT_DATA}             #入力された文字列の長さを取得
DATA_CHK=${INPUT_DATA//[0-9a-z]/0}      #半角英数のみを0に置き換える

until [ ${DATA_LEN} -eq 0 ];         #入力文字数だけ0で埋めた変数を作成
do
  DATA_CHK2=${DATA_CHK2}"0"
  DATA_LEN=`expr ${DATA_LEN} - 1`
done

if [ ${DATA_CHK} = ${DATA_CHK2} ]; then    #0に置き換えられた入力データと文字数だけ0で埋められた変数を比較する
  exit 0                   #同じなら入力された文字は半角英数のみ
else
  exit 1                   #違うなら入力された文字に半角英数以外が含まれている
fi

シェルを実行する時に引数に入力データを渡してやれば、その内容に半角英数以外が含まれていれば戻り値として1を返します。

後はご自由に(^^)

linux/bash/check.txt · 最終更新: 2010/06/25 01:59 by miyako
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0