プロが教える店舗&オフィスのセキュリティ対策術

HP-UNIX

シェルで指定された引数の桁数のチェックや入力値のチェックを
行いたいと思っております。

自分なりに調べた所、awkコマンドを使用して、lengthや正規表現
でチェックできそうなのですが、シェルで指定された引数をどの
ようにしてチェックすればよいのかがわかりません。

例)aaa.sh 引数1 引数2
  ⇒aaa.shの中で、$@等で上記のチェックを行う???

 イメージとしては、
  ・if (length($1) == 10)
・$1!~/[a-zA-Z0-9]/

 でも、aaa.shの中で、awkの使用方法がわかりません。

awkを使用する以上、ls -l | awk ~~~ のように、
一度、引数をファイルに出力してから、grepとパイプ機能を使用
する?しか方法はないでしょうか。
(実行環境で、パーミッションの設定でシェルを実行できない
為、上記の方法を試すには到っていません・・・パーミッションについて
も、まだ理解が乏しい為。)

シェルスクリプトを触り出して、まだ間もない事もあり、可能な
のかどうかも判断できない状況ですが、ご存知の方がいらっしゃ
いましたら、ご教授頂ければと思います。
 

A 回答 (2件)

「シェルが存在しませんという旨のメッセージ」


がちょっと気になるんですが, シェルスクリプトの 1行目の #! で指定したシェルはありますか?
    • good
    • 2

書籍などで調べたのでしょうか?



awkならネットで調べて試してみる事を繰り返した方が近道ですがねぇ。

パイプなどを使った方が簡単で便利だと思いますけど。
echo $1 | awk "{~~~
で引数を渡すだけだし。
それよりもシェルが試せない方の解決が先じゃない?
chmod +x aaa.sh で実行権を与えていないって話でしょうか?
シェルの先頭には、#!/bin/sh などシェルのパスをかいています?
実行は、
./aaa.sh 引数1 引数2
ですよね?
因みにawkもスクリプト言語なのでawkのスクリプトを書いてそれだけでチェックする事も可能ですよ。
アークのヘルプ(awk --help)で表示される
awk '{ sum += $1 }; END { print sum }'の''内をスクリプトで記述する形です。
簡単なものだとスクリプトファイルを書かなくても記述できるのが簡単・便利なアークのよさですけどね。

この回答への補足

ありがとうございます。

実行権なんですが、
シェルの先頭には、シェルのパスは記述しております。
又、実行権も当初なかった為、chmod +x で追加致しました。

実行時は、./aaa.sh 引数1 引数2 で実行しております。
その際に、シェルが存在しませんという旨のメッセージが出ました。
(実行権を付与する前は、パーミッションが~~~と表示されておりました。)

未だに、所有者やグループと言った概念がよくわかっていないのです
が、シェルファイルに実行権限(x)を付与すれば実行出来ると思って
いるのですが、間違いでしょうか。
(所有者やグループと実行権限は全く別の概念?)

又、桁数チェックについては、他の質問を参考に解決しそうです。
(自宅マシンには、UNIXがないので、まだ実際には試しておりませんが・・・)

LEN=`expr "$1" : '.*'`
if [ $LEN -ne 桁数 ] then
 #エラー
fi

補足日時:2007/06/10 01:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!