• ベストアンサー

シェルプログラムの判定で困っています

皆さんのお知恵をお貸しください 環境はtcsh irixです 目的 set name = $<で$nameに入る文字を判定、検索したい 検索除外文字 -(マイナス) .(ピリオド、少数点) 数字 除外文字以外が入った時にエラーを出したいのですが、どう判定よいのか? 以上よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

switch 使ってできるかも. switch ($name) case *[^0-9.-]*: 変な文字がある breaksw endsw みたいな感じかな.

kigata
質問者

お礼

switchこんな使い方もあるんですね、勉強になりました 有難うございました。

その他の回答 (1)

  • maku_x
  • ベストアンサー率44% (164/371)
回答No.1

シェルの内部コマンドだけでは実現は難しいと思います。ここは sed コマンドを使って、 set t=`echo $name | sed 's/[-\.0-9]//g'` if ("$t" == "") then echo "Error" endif のように書けば、判定できますが、如何でしょうか。

kigata
質問者

お礼

if thenのみでは厳しいようですね、sedを使ってみます ありがとうございました。

関連するQ&A

  • シェルプログラムの判定について

    皆さんのお知恵をお貸しください シェルはcshです 目的set name = $<で$nameに入る文字が+-*/(一文字毎です)の時エラー処理をしたい 現状下記のプログラムですが判定出来ません set xx = $< set moji = `grep -c '[\-\+\*\/]' xx` if ( $moji == 1 ) then echo 文字に誤りがあります endif  else if ( $moji == 0 ) then echo OKです endif +-*/が入った時にエラーを出したいのですが+-*/をどう判定したらよいのか教えて頂けます様お願い致します。

  • CakePHPでのemptyの 0 判定に関して。

    どなたか、熟練のプログラマーさんorSEさん、 お知恵の拝借をお願い致します。 現在、CakePHPで開発をしているわけですが、 emptyに 0 や '0' を判定させた際、 falseを返してしまうのに非常に困っています。 現在やろうとしている判定が下記のとおりです。 ・nullが来たとき、変数の宣言が無い時など値が無ければエラー処理 ・数字や文字列が来た時は通常処理 ・数字の0や文字列の0が来た時も通常処理 なのですが、なかなか良い判定文が書けないのです。 emptyで判定すると0が処理から抜けてしまい、 抜けた0を拾うために else if( $変数名 === '0' || $変数名 === 0)などとすると $変数名の宣言が無い場合にワーニングが出てしまいます。 原則として、エラーを吸収する @ はPMの指示で使用が禁止されているため使えません。 なにか上手い処理の指定の仕方があれば教えてください。 一番ベストは、emptyの処理をオーバーライドして 0 or '0' 判定時にtrueを返すことなのですが、 オーバーライドのやり方が分からないのでそれも現状では出来ません。 ネットで色々読み漁りましたが、解決方法が見つかりませんでした。 どなたか、良い解決方法がありましたらご教授願います。

    • 締切済み
    • PHP
  • 数字以外の文字列判定方法

    フォームで数字以外を入力した場合に、 エラーのアラートを出したいのですが、 その文字列の判定方法及び、アラートの 出し方がわかりません…。 ご存知の方は教えてください。 よろしくお願いします。

  • Cシェルでの文字列大小比較

    Cシェルで set AA="aa" set BB="bb" if( $AA > $BB )then echo "$AA > $BB" endif というような判定がしたいのですが、 上記の場合、”if: 条件式構文が正しくありません”というエラーが出力されます。 Cシェルの場合、文字列の比較は ifでイコールかノットイコールかは判定できますが、文字コードの大小比較が出来ないようですが、 文字列の大小比較をするにはどうすればよいのしょうか

  • 日本語かどうかの判定について

    VB2005 の初心者です。 テキストボックスに入力された文字が日本語(全角も半角も含めて)だったらエラーとしてメッセージボックスを表示させたいのですが、やり方が分かりません。 半角の数字、アルファベットはエラーとしませんが、半角の日本語、全角文字は全てエラーとしたいです。 ヒントになるようなことでも良いですが、できれば実際のコーディングもご教授いただければ幸いです。 皆様の知恵をお借りできればと思います。 よろしくお願い致します。

  • テキストボックスに入力された値の判定

    Visual Studio2010初心者です。C#で学習しています。 テキストボックスに入力された値が数字(0~9)かそうじゃないか判定をしたいです。 テキストボックスに文字が入力されたらエラーとして検知したいのですが、どのように処理をすればよろしいでしょうか? ネットで調べるとTryParseメソッドでできるみたいですが、よくわかりません・・・ よろしくお願いします。

  • ASPで文字列に外字が含まれているか判定したい

    ASPで、画面で入力された文字列に外字が含まれているかどうか判定して、含まれる場合はエラーメッセージを表示したいのですが、外字の判定処理は可能でしょうか。 php版の外字の判定処理についてはYahoo知恵袋にありました。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1364613748 ASPで同様の処理を行うにはどのような処理になるのかご教授ください。

  • 半角英数判定

    こんにちわ。最近PHPをやりはじめた者です。 下記のスクリプトを使用して空白判定はできたのですが、半角英数文字 を判定できなくて困っています。エラーが出てしまい、画面遷移できないのです。したいことは、半角英数文字以外がユーザーIDとパスワードに入力されたとき、「半角英数で入力してください」という判定をしたいのです。画面遷移後のスクリプトは文字制限の都合で記載できませんでした。  ユーザー名<br> <form method = "post" action = "subject02-01.php" > <input type = "text" name = "USERNAME"><br> パスワード<br> <input type = "password" name = "PASS"> <input type = "submit" name = "submit" value = "ログイン"> <?php $str = mb_convert_kana($str,"rna") if($_POST["submit"] == "ログイン") if($_POST["USERNAME"] == "root" && $_POST["PASS"] == "admin") { echo "認証に成功しました。"; } else if( $UserName == "" || $Password == "") else if(ereg("[A-Za-z0-9\-]",$str)) else { echo "認証に失敗しました。"; }

    • ベストアンサー
    • PHP
  • java 9の倍数 プログラム

    数字による長い文字列を入力し、それが9の倍数であるかないかを出力するプログラム。但し、9の倍 数であることの判定は、次のように行うこととする。すなわち、%(あまり)は使わないこととする。 423711は、9の倍数である。 4+2+3+7+1+1=18 1+8=9 ⇒ 9となれば、9の倍数 385772は、9の倍数でない。 3+8+5+7+7+2=32 3+2=5 ⇒ 9未満となれば、9の倍数ではない。 “d=Integer.parseInt(s);”を用いると、大きな桁数の入力につ いてエラーとなってしまう。そうならないようなプログラム 。 通報する

  • エクセル VBA 数値のみの個別抽出方法

    エクセルのグラフ参照範囲の文字列から、数字のみを抽出する方法を教えて下さい。 目的は、ある条件の時だけ系列の書式設定を変更するのですが、それを自動でするためです。 現状では条件の判定の繰り返し回数が系列の要素数を上回るように設定して、全ての要素について判定できるようにしています。 しかし条件判定の繰り返し回数が要素数を上回った時点でエラーとなります。 エラーとなっても目的の操作は終了しているのですが、別の系列の書式設定をするのに一旦VBに戻ってから再び実行しています。 これを要素数の数だけ判定するようにして、エラーになることなく系列を順次繰り上げるようにしたいです。 =SERIES("系列9",Sheet1!$A$45:$A$165,Sheet1!$B$45:$B$165,9) ウェブサイト様で参考にさせて頂きましたコードを書きましたら、このように文字列が返りました。 この場合で言いますと165から45を引いたものを繰り返し回数として指定するために、数字の部分のみを、45と165を混ぜることなく個別に取得したいです。 いい方法がありましたら教えて下さい。 是非宜しくお願い致します。 なお参照範囲の取得のために記入しているコードです。 Dim objChart as Chart Dim Sansyouhani(1000) as Variant Set objChart = ActiveSheet.ChartObjects(1).Chart With objChart.SeriesCollection For i = 1 To .Count Sansyouhani(i) =.Item(i).Formula Debug.Print Sansyouhani(i) Next i End With

専門家に質問してみよう