以前のリビジョンの文書です
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 [ ${DATACHK} = ${DATA_CHK2} ]; then #0に置き換えられた入力データと文字数だけ0で埋められた変数を比較する exit 0 #同じなら入力された文字は半角英数のみ else exit 1 #違うなら入力された文字に半角英数以外が含まれている fi
シェルを実行する時に引数に入力データを渡してやれば、その内容に半角英数以外が含まれていれば戻り値として1を返します。
後はご自由に(^^)