
いつもお世話になっております。
宜しく御願い致します。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ubuntu apt, apt-getのUpdate時...
-
ログにserver reached MaxReque...
-
Gccインストール中のlibgmpエラ...
-
xcpoyコマンドでコピーエラーし...
-
パソコンが時々落ちます
-
Windows10でフォルダー名が変...
-
異常にクラッシュやブルースク...
-
Windows7でエラーが出ます。
-
0×80041003 のエラー
-
マザーボードの赤いランプの意...
-
ファイルサイズが取得できない...
-
2008Serverで、イベントID:11が...
-
オーバークロックソフトのエラ...
-
SaAT Netizen(NzSess.exe)のメ...
-
UNIX(Cシェル)での数値...
-
LyricsMasterでエラーが出てし...
-
OLEPRO32.DLLが原因で…アプリケ...
-
sysprepの
-
MacBookAirの画面がグレーに
-
Office2016でmso40uiwin32clien...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
市販DVD再生ができません。ubun...
-
ログにserver reached MaxReque...
-
ubuntu apt, apt-getのUpdate時...
-
UNIX(Cシェル)での数値...
-
特定の Web サイトにアクセスで...
-
makeコマンドのエラーについて(
-
Windows10でフォルダー名が変...
-
xcpoyコマンドでコピーエラーし...
-
ビット落ちとは一体何なのでし...
-
自宅メールサーバがうまく機能...
-
windouwsupdateエラー80004002...
-
bashで数値チェック
-
OLEPRO32.DLLが原因で…アプリケ...
-
リモートデスクトップについて...
-
突発的に青い画面後落ちてしま...
-
iphotoのエラー「フォトライブ...
-
異常にクラッシュやブルースク...
-
立上げ時エラー「Failed to ini...
-
メールヘッダは自由につけても...
-
メールサーバの転送限界?
おすすめ情報