• ベストアンサー

if条件の複数指定

基本的な質問ですみません。 Bシェルのif条件文で、例えば 「変数"$VAL"の値が"A"でも"B"でも"C"でもなかった場合はエラーを出力してexitさせる」 という処理を行いたいとします。 ("A"、"B"、"C"の場合は何もせず) もっともシンプルな構文はどういったものになるでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
  • Ceren
  • ベストアンサー率49% (90/183)
回答No.1

if [ "${VAL}" != 'A' -a "${VAL}" != 'B' -a "${VAL}" != 'C' ]; then echo 'ERROR' fi とか case "${VAL}" in 'A') ;; 'B') ;; 'C') ;; *) echo 'ERROR' ;; esac とかいうのはどうでしょうか。

harahachi
質問者

お礼

上の例のような形式が理想です。 動作確認も取れました。 ありがとうございます。

その他の回答 (1)

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

#! /bin/sh if [ x$VAL == x"A" ] ; then exit 0; elif [ x$VAL == x"B" ] ; then exit 0; elif [ x$VAL == x"C" ] ; then exit 0; else echo error; exit 1 ; fi

harahachi
質問者

お礼

すみません、ちょっと説明不足でしたね。 >("A"、"B"、"C"の場合は何もせず) というのはexitすらしない、という意味でした。 ご回答ありがとうございます。

関連するQ&A

  • IF VBA 1つの条件で複数の処理

    IF関数で、1つの条件(セルに特定の文字があったら) セルA1=B1+C1 セルB1=D1+E1 のように2つの処理を行ないたい場合、どんな構文を作成 したらいいでしょうか。 IF~Then ElseIf~Then End If というのが基本構文ですが、条件が複数あるのではなく 条件1つで処理は2つというのが分かりません。

  • ifの条件式 Andを使用するものについて

    phpで、 $a="あいうえお"; $b="かきくけこ"; $c="かきくけこ"; と変数を三つ宣言しました。 上の変数三つを利用して、以下条件のif文を作りたいと思いました。  条件:$a変数 と $b変数が異なり、かつ $b変数 と $c変数の内容が同じとき「処理A」を実行させる。 ○作成したif文 if(($a <> $b) && ($b == $c)){  処理A } と記述したのですが、 ifブロック処理Aが実行されません。 なぜなのでしょうか…。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • 条件が複数ある場合のif文の書き方

    条件が一つだけの時は上手く動いたのですが、条件を複数にした場合はどう書いたらいいのかわからず、質問させていただきました。 『おしえて!!ACTION SCRIPT』という本を見ながら、Flashを作っています。 その中ではif文の書き方は if(条件式が正しかったら){  実行するスクリプト; } となっていますが、変数が複数あって、そのすべてが合致しないと指定のフレームに飛べないようにするためにはどう書いたらいいでしょうか? if(a==1){ gotoAndPlay(2); } if(b==1){ gotoAndPlay(2); } if(c==1){ gotoAndPlay(2); } と、続けて書くとa=1の時点でフレーム2に進んでしまうことになりますよね? そうでなく、a.b.c全ての変数が1の場合に、フレーム2に飛ぶようにしたいのです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • if文の使い方について

    if文でaの値とbの値とcの値が一緒なら次の処理を行うものを作成したいのですが。 if($a==$b==$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、ダメで if($a=$b=$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、これもダメでした。 if($a==$b) {  if($b==$c)  {    処理   }else{     その他の処理   } }else{ その他の処理 } と書かいたら実行されたのですが、このように分けて書かないとダメなのですか? いいやり方がありましたら教えてください

    • ベストアンサー
    • PHP
  • 【ExcelVBA】IF条件を満たしているのに、IF条件のところで止まってしまう

    Sub test1() 変数1 = IsEmpty(Range("C1")) If Range("A1") > 0 And Range("B1") = 0 And 変数1 = True Then   test2 End If End Sub 止まったときのデバッグでの表示は Range("A1")は「100」(セルの中身) Range("B1")は「0」(セルの中身) 変数1はRange("C1")がエラー表示なので「True」 すべての条件を満たしているのですが、 IF条件のところで止まってしまいます。 (IF条件のところの1行が黄色くハイライトになっている状態) 止まったデバッグの後に、F5を押して実行させると、 IF条件の続きから実行されて、test2が実行されて処理が終了します。 何で、IF文のところで一度止まってしまうのかわかりません。

  • if文を使わずに小数の符号を取れるか

    if文を使わずに、値が正なら1、0なら0、負なら-1を出力する方法はありますか? if文(とできれば掛け算)を使わずに、変数a(1か-1が入る)と変数b(小数が入る)の符号が違ったらカウントを増やすプログラムを作らないといけないのですが、 変数bを1,0,-1に分けることができれば楽になると考えたのですが、 符号を取り出す関数を見つけることができませんでした。 b/fabs(b)も考えたのですが、これだとb=0の場合に0/0となるためうまくいきません。

  • phpでif文に指定されている条件の意味について

    あるプログラムの中に以下のような処理があったんですが意味がわかりません。 if(true || isset($val)){ 処理 } 上記の場合いずれかが真ならif文の処理を行うということになると思うのですが $valの状態がどうであろうが一つ目の条件に「true」が入ってる時点で必ずブロック内の処理を行うと考えていいのでしょうか?

    • ベストアンサー
    • PHP
  • Excel でIFを使った複数条件の式を教えてください

    お世話になります。 Excelでの入力で困っています。 以下のような条件での式なのですが・・・ セルA1*B1の値が 100,000以下の場合200と出力 100,001以上で200,000以下の場合250と出力 200,001以上は場合450と出力 自分で作った式は IF(A1*B1>200000,450,IF(A1*B1>100000,250,200)) なのですが、上手くいきません。 関数はあまりあつかったことがないので、どなたかご教示いただけると 助かります。 よろしくお願いします。

  • 複数(5つ)の条件を指定したIF関数

    IF関数を用いて以下のように場合、どのようにすればよいでしょうか。 条件は5つです。 ご教授をお願いします。 (1)A1のセルの値が300,000以上、400,000未満の場合、B1に5,000と表示 (2)A1のセルの値が400,000以上、600,000未満の場合、B1に7,500と表示 (3)A1のセルの値が600,000以上、800,000未満の場合、B1に10,000と表示 (4)A1のセルの値が800,000以上、1,000,000未満の場合、B1に12,500と表示 (5)A1のセルの値が1,000,000以上の場合、B1に15,000と表示

  • switchでの条件分岐の書き方を教えて下さい。

    こんにちは。 いつもお世話になっております。 またわからない事が出てきてしまったので、どうか ご指導よろしくお願いいたします。 簡単な検索機能をつくりたくて、思考錯誤 しております。 フォームからPOSTで受け取る変数の数は 10個あります。 それぞれの変数が ””でなければ、受け取った 変数を元に、SQL文がかわってゆく。 という事がしたいのです。 10個もあるので、たとえば 変数が$_POST["a"]から$_POST["j"]まであった時に if文を使うとすると if($_POST["a"] != "" && $_POST["b"] == "" && $_POST["c"] != "" (略)){ $stt = "検索したい予定のSQL文1"; }elseif($_POST["a"] == "" && $_POST["b"] != "" && $_POST["c"] != "" (略)){ $stt = "SQL文2"; ・ ・ ・ と言う風に、ものすごいにはなると思うのですがifを つなげていけば良いのかな、と思うのです。 PHPの基礎HPなどを検索してみると、SWITCHを 使えば、多岐に分岐するIF文を、見やすくできる、 と書いてあったので、使ってみたいのですが、書き方の 説明によると switch(変数){ case 値1:  条件を満たす時の処理1 break; case 値2:  条件を満たす時の処理2 default: } と紹介してあったのですが、今回わたしがしたい場合の 条件分岐だと、変数は一つではなく、ある変数は空でこの変数は値が何か入っていて、またもう一つの変数は 空で・・・の時は、このSQL文、というように させたい場合には、switchでどうかけばよいのか わからないのです。 それとも、こういう条件分岐の場合は、switchを 使うべきではないのでしょうか・・・? どうかご指導よろしくお願いいたします。  

    • ベストアンサー
    • PHP