いつもお世話になっております。
宜しく御願い致します。
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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
cshで文字列分割
その他(プログラミング・Web制作)
-
Cシェル内でBシェルの様な関数の記述方法はありますか?
UNIX・Linux
-
cshの文字列操作(0埋め)
その他(プログラミング・Web制作)
-
-
4
cshでエラー出力を出さないようにしたい
UNIX・Linux
-
5
UNIX Cシェルで実数の比較
UNIX・Linux
-
6
cshで拡張子を除いたファイル名を取得したい
その他(プログラミング・Web制作)
-
7
シェルスクリプトでファイル内の数値文字列を数値として扱うには
その他(プログラミング・Web制作)
-
8
Cシェルでの文字列大小比較
その他(プログラミング・Web制作)
-
9
Cシェルの switch~endsw の使い方を教えてください。
その他(OS)
-
10
cshでsubstr
その他(プログラミング・Web制作)
-
11
cshで変数に値が入っているかどうか見る方法
UNIX・Linux
-
12
shellスクリプトから別のshellスクリプトを呼び出す方法
その他(プログラミング・Web制作)
-
13
『存在するかどうか分からない』環境変数にcshで新しいパスを設定したい
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ログにserver reached MaxReque...
-
市販DVD再生ができません。ubun...
-
UNIX(Cシェル)での数値...
-
ビット落ちとは一体何なのでし...
-
Microsoft Update 0x80072F8Fエ...
-
顔文字が全部登録できません。
-
softEther VPN環境をraspberry ...
-
メールアドレスが生きているか...
-
makeコマンドのエラーについて(
-
同一LAN内からapacheにアクセス...
-
シャットダウン時のExplore.exe...
-
WindowsUpDateが出来ない
-
Cryptographic Services が開...
-
SaAT Netizen(NzSess.exe)のメ...
-
BIOS以外起動できない原因は?
-
VMwareにCentOSをインストール...
-
MSオフィス2003のワードがおか...
-
Windows Media Playe...
-
WordpressでAMPのプラグインが...
-
Androidのログ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
市販DVD再生ができません。ubun...
-
ログにserver reached MaxReque...
-
マザーボードの赤いランプの意...
-
メールアドレスが生きているか...
-
VMwareにCentOSをインストール...
-
UNIX(Cシェル)での数値...
-
WordpressでAMPのプラグインが...
-
時刻がかなり狂う。同期エラー...
-
Apacheエラー 「(24)Too many o...
-
LyricsMasterでエラーが出てし...
-
特定の Web サイトにアクセスで...
-
ubuntu apt, apt-getのUpdate時...
-
冗長の失敗した場合の対処
-
HDD交換修理したWindows10・...
-
xcpoyコマンドでコピーエラーし...
-
Windows10でフォルダー名が変...
-
同一LAN内からapacheにアクセス...
-
ビット落ちとは一体何なのでし...
-
knoppixによるバックアップ中の...
-
SaAT Netizen(NzSess.exe)のメ...
おすすめ情報