![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっております。
宜しく御願い致します。
if文で数値判断により条件分岐をしようと思ってます。
条件は”0<変数<=20”(仮)で、エラーだと警告文表示後に変数入力部に戻したいのです。
変数を画面上から”変数 = $<”で読み込み、処理をしたいのですが、うまくいきません。
整数値だとうまく行く方法を見つけましたが、小数値が入るとNG、小数値でもうまく行く方法を見つけました(bcを使用)が、文字列が入力されるとNG、と行き詰まってしまいました。
入力値としては小数値を期待しているのですが、操作する人が間違って”3..2”や”2 5”、”4rr”等が入力された場合も偽の判断をもって処理を戻したいのですが、ifの形式がおかしいとか、文法上のエラーがあると表示され、うまく戻ってくれません。
なにか良い方法はないでしょうか?
要は、if(変数 > 0 && 変数 <= 20) then で変数の値が文字列、小数、整数問わずに処理をしたいだけなんですが・・・。
どうぞ宜しく御願いします。
No.4ベストアンサー
- 回答日時:
expr等を使って正規表現で判断するしかないでしょうね。
\| の前が小数値、後ろが整数値のチェックです。expr以外でも正規表現が使えるコマンドなら何でもいいですが。
expr "$var" : '[0-9][0-9]*\.[0-9][0-9]*$' \| "$var" : '[0-9][0-9]*$' >/dev/null
if( $status == 0 ) then
正常処理
else
エラー処理
endif
詳細な回答有難うございます。
このようなやり方は想像つきませんでしたが、条件をたくさん設定して、エラー入力を回避するしかないみたいですね・・・。参考にさせて頂きます。
No.3
- 回答日時:
文法エラーのメッセージを /dev/null に捨てたらどうですか。
あるいは、一旦 exprコマンドで数値としての形式を取っているか確かめてから、cshのif文を行うとか。
いずれにせよ、シェルスクリプトをcshで書くことはお薦めできません。
cshは対話利用にとどめてshで書く方が良いと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Ruby プログラミング 3 2023/06/09 14:30
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excel 条件付き書式について 1 2022/12/14 20:38
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- JavaScript 助けてください‼︎ javascriptで質問があります。 配列を定義して、 29342、45342 3 2022/06/26 22:06
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
cshで文字列分割
その他(プログラミング・Web制作)
-
Cシェル内でBシェルの様な関数の記述方法はありますか?
UNIX・Linux
-
UNIX Cシェルで実数の比較
UNIX・Linux
-
-
4
シェルスクリプトでファイル内の数値文字列を数値として扱うには
その他(プログラミング・Web制作)
-
5
cshの文字列操作(0埋め)
その他(プログラミング・Web制作)
-
6
cshでエラー出力を出さないようにしたい
UNIX・Linux
-
7
『存在するかどうか分からない』環境変数にcshで新しいパスを設定したい
UNIX・Linux
-
8
Cシェルの switch~endsw の使い方を教えてください。
その他(OS)
-
9
SQL*Plusで、コマンドの返答を非表示にする方法
Oracle
-
10
cshで拡張子を除いたファイル名を取得したい
その他(プログラミング・Web制作)
-
11
cshの条件式について教えてください
その他(プログラミング・Web制作)
-
12
Cシェルでの文字列大小比較
その他(プログラミング・Web制作)
-
13
shellスクリプトから別のshellスクリプトを呼び出す方法
その他(プログラミング・Web制作)
-
14
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ログにserver reached MaxReque...
-
LyricsMasterでエラーが出てし...
-
エラー表示に対処するには?(G...
-
かな入力が突然出来なくなります。
-
メールアドレスが生きているか...
-
同一LAN内からapacheにアクセス...
-
iPodclassicとiTunesの同期が突...
-
Taskscheduler ID404エラー
-
UNIX(Cシェル)での数値...
-
マザーボードの赤いランプの意...
-
windows10の評判は?
-
SonicStageで曲の転送ができない
-
毎回同じログオンスクリプト(...
-
巡回冗長検査(CRC)エラー
-
特定の Web サイトにアクセスで...
-
エラー・・クラスはオートメー...
-
Window2000起動途中でとまる
-
iTunesでCD書き込みエラーが頻...
-
冗長の失敗した場合の対処
-
巡回冗長検査(CRC)エラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
市販DVD再生ができません。ubun...
-
ログにserver reached MaxReque...
-
ubuntu apt, apt-getのUpdate時...
-
マザーボードの赤いランプの意...
-
ビット落ちとは一体何なのでし...
-
makeコマンドのエラーについて(
-
同一LAN内からapacheにアクセス...
-
数年前からWindows10 の Update...
-
メールアドレスが生きているか...
-
Androidのログ
-
CloudreadyでLinuxのセットアッ...
-
UNIX(Cシェル)での数値...
-
ファイルにこれ以上データがあ...
-
SaAT Netizen(NzSess.exe)のメ...
-
時刻がかなり狂う。同期エラー...
-
Windows10でフォルダー名が変...
-
HDD交換修理したWindows10・...
-
異常にクラッシュやブルースク...
-
特定の Web サイトにアクセスで...
-
VMwareにCentOSをインストール...
おすすめ情報