
いつもお世話になっております。
宜しく御願い致します。
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ランキング
-
ログにserver reached MaxReque...
-
EInOutError 0010CAE6 I/Oエラー
-
マザーボードの赤いランプの意...
-
XPでPlugPlayManagerのエラー
-
特定の Web サイトにアクセスで...
-
OLEPRO32.DLLが原因で…アプリケ...
-
リモートデスクトップについて...
-
イヤホンを抜くとブルースクリ...
-
Windows7でエラーが出ます。
-
市販DVD再生ができません。ubun...
-
knoppixによるバックアップ中の...
-
ubuntu apt, apt-getのUpdate時...
-
Windows 10 バージョン 22H2 に...
-
sims4についてです。 別のパソ...
-
LinuxでBlu-rayのフォーマット
-
VirtualBox にインストールした...
-
検索履歴削除
-
マイコンピュータのローカルデ...
-
ファイル共有を使用可能にする...
-
Solarisの再インストール
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ログにserver reached MaxReque...
-
市販DVD再生ができません。ubun...
-
ubuntu apt, apt-getのUpdate時...
-
OLEPRO32.DLLが原因で…アプリケ...
-
特定の Web サイトにアクセスで...
-
xcpoyコマンドでコピーエラーし...
-
makeコマンドのエラーについて(
-
windouwsupdateエラー80004002...
-
UNIX(Cシェル)での数値...
-
異常にクラッシュやブルースク...
-
bugsplatというソフトがパソコ...
-
SaAT Netizen(NzSess.exe)のメ...
-
VMwareにCentOSをインストール...
-
同一LAN内からapacheにアクセス...
-
DirectXの内部システムエラー
-
マザーボードの赤いランプの意...
-
毎回同じログオンスクリプト(...
-
数年前からWindows10 の Update...
-
ファイルにこれ以上データがあ...
-
スクリーンセーバ
おすすめ情報