• ベストアンサー

ifとcaseについて

Tera Term proを使ってるんですが、 shell scriptで、 ifとcaseはどのように違うんでしょうか? 教えてください。

  • janne
  • お礼率16% (11/68)

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

sh系のコマンドだと思って回答します。 if は、それに続くコマンドを実行し、結果が0かどうかで分岐します。 case は、文字列のパターンマッチをします。 ん、No.1 の回答と変わらないですね (^^; 例えば、あるファイルに文字列 XXX があれば、EXIST と表示するスクリプト。 if grep XXX filename then  echo XXX fi 一文字入力して、Y/N で処理を分けるようなスクリプト。小文字でもOKにしてます。 read x case $x in  y|Y) echo Yes;;  n|N) echo No;;  *) echo Else;; esac

janne
質問者

お礼

どうもありがとうございました。

その他の回答 (2)

  • mitsu-s
  • ベストアンサー率25% (7/27)
回答No.2

何のOS,shellを使用されているかわかりませんが、 ifは選択 caseは分岐 となります。 たとえば xという変数の中が0と1しか有り得ない場合はif xという変数の中身が0~5まで有り得る場合はcase というふうに使い分けます。

janne
質問者

お礼

どうもありがとうございました。

回答No.1

sh のことですね。 if は、与えたコマンドを実行させ、それが真か偽か(成功か失敗か)で条件分岐します。 case は、与えた文字列が、選択肢のどれにマッチするかを調べ、マッチした箇所に条件分岐します。 if で、[ ] などを使って、文字列の一致を調べるじゃないかという見方もできますが、実際には、[ ] は test という外部コマンドの別名であり、そのコマンドが文字列の一致を調べて成功したり失敗したりする機能をもっているだけです。

janne
質問者

お礼

どうもありがとうございました。

関連するQ&A

  • tera term proの操作方法について

    こんにちは tera term pro の使い方、操作方法について質問です。 tera term内のファイルに、外部データ、数値(excexlなど)を貼り付け(Ctrl + V?)したいのですが、うまくできません。 外部データを貼り付けできないのでしょうか? もし、できないなら、どのように外部データをtera term内入れれれば、良いのでしょうか? パソコン用語全く知らないといっていいほど、ど素人なんで、 具体的にわかりやすく教えていただけると ありがたいです。 よろしくお願いしますm(_ _*)m

  • Tera Term Pro からリモートログインした際に、長時間放置したあとも継続してログイン状態が続くようにしたいのですが

    Windows OS 上にインストールした Tera Term Pro + TTSSH を使って、FreeBSD のマシンにリモートログインしております。Windows 上で完結するような作業をするなどして、接続してプロンプトが出ている状態で、ある程度長時間放置していると、Tera Term Pro からの入力を受け付けず、FreeBSD 側からpsコマンドで確認するとすでにログアウトした状態になってしまうようになっています。その状態で、Tera Term Pro に何らかのキー(Enterも)を押すと、数秒後にその Tera Term Pro のウインドウが消えます。 そのような状態になったときに、毎回 Tera Term Pro を動かしてログインしなおすのもなんだか面倒なので、できれば一度接続したら、意識的にログアウトしようとしない限り接続しっぱなしの状態にできればと考えております。 もしスクリーンロックをせずに席を立ったとして、誰かに操作されたらというセキュリティのことを考えたら、この現象はその危険を防止する優れた機構だとは思うのですが、あえてリモートログインしっぱなし状態を実現するためにはどのようなことをすればよろしいでしょうか。 現在行っているのは、作業をしない間は top をかけ続けておくくらいしか思いつかないでいるのですが、もし環境変数や .cshrc .login などの書き換えなどでプロンプトが出っぱなしになる状態が続けられうようになれば幸いです。 # NetBSD のホストにログインしっぱなしにした場合は、延々と待ち続けてくれているので、なんとなく上に上げたような方法でプロンプト出しっぱなし状態ができるのでは、と思いました。 このようなことを行うための方法・ヒント・考え方・キーワードなどをご存知でしたら、ご教示いただけますと幸いです。 よろしくお願いいたします。

  • Tera TermとTTSSHの使用方法について

    はじめまして. Win2000でTera Term Pro 2.3とTTSSHを用い,Linuxマシンと通信させたいのですが, いろんなホームページでTTSSHの使い方(Tera Termのフォルダへの貼り付け等)を読んで,やっているのですが, うまく動いてくれません. Tera TermのアイコンをダブルクリックしたらTera Termは正常に起動するのですが, TTSSHのほうのアイコンをダブルクリックしても何も起動しませんし何も起こりません. 私の行っている手順は, 1.双方の圧縮ファイルを解凍. 2.解凍フォルダのTera Termのsetup.exeでインストール. 3.できたTera Termの実行ファイルのあるフォルダにTTSSHのファイルをすべて貼り付け. (3.Tera Termの解凍フォルダにTTSSHのファイルをすべて貼り付けということも試してみました.) 4.TTSSHアイコンをダブルクリックで起動.  ですが,‥‥‥変化なしです‥‥ 当方の環境は dellのノート プレシジョン pen4 2.5G               メモリ1G               OS Win2000 です. 詳しい方,アドバイスいただけたらありがたいです. よろしくお願いします. (2chのテラタームスレッドにも先ほど書き込みしたのですが,ほとんど更新されていないスレッドということに気がついたのでこちらにも書き込みさせていただきました.すごく困っていた為,結果的にマルチ投稿になってしまったことをお許しください.)

  • UTF-8 Tera Term Proの使い方

    OS-XPです。 タスクバーにUTF-8 Tera Term Proのアイコンは表示されるのですが、接続できません。ログイン画面は、出てきました。パスワードとかも出てきますが、どうしたらいいかわかりません。よろしくお願いします。

  • Tera Termに仕様について

    教えてください。 現在サーバの勉強をしております。 Tera TermからサーバにSSH接続を行なっておりますが、 root権限からユーザ権限に替えようと、 「exit」をコマンドすると、Tera Termが閉じてしまいます。 再度Tera Termを立ちあげないと権限の移行はできないものなのでしょうか。 よろしくお願い致します。

  • Tera Term にファイルを転送

    Tera Term に好きな順番に複数のファイルを送る方法を探しています キーボードで送りたいファイルを打ち、そのファイルをTera Termへ転送していきたいと考えています なのでそのための方法を教えてください

  • if文からcase文への置き換え

    ピクチャボックスをクリックしたら、チェック ボックスがチェックされるメソッドを作りたいと 思っています。 Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click,PictureBox2.Click 'ここから If sender Is PictureBox1 Then If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If ElseIf sender Is PictureBox2 Then If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End If 'ここまで End Sub 上記のif文をCase文に置き換えたくて、 'ここから Select Case sender Case PictureBox1 If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If Case PictureBox2 If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End Select 'ここまで 上記のように書き換えたのですが、エラーが出てしまいます(ビルドは通るのですが)。 Case文の使い方が間違っているんだとは思いますが、どこがどう 間違っているのがよくわかりません。 ご教授いただけないでしょうか?

  • [ASP]If~Else If~End If 対 Case

    こんにちわ。 ASPでWEBプログラミングをしております者です。 条件分岐の部分なのですが、結構なパターンで分岐させる予定です。 その際、Ifを使うのとCaseで分岐させるのではどちらが良いか?ということです。 サーバの負担の少ないのはどっちなんでしょうか? どうお考えですか?

  • viでファイルを開くのをまちがえたときの対処

    UNIXのマシンでファイルを開こうとしてTera termで vi test.c と書くべきところをまちがえて vi test>c とかいたら止まってしまいました。 どうなってしまったのでしょう?そしてTera termをむりやりdisconnectしてしまっても大丈夫でしょうか?

  • Tera Term Proに関する質問です。

    Tera Term Proに関する質問です。 現在、Tera Term Proを使用して、シリアル通信で機器に信号を送ろうとしています。 その通信のコマンドには、STXやETXが必要であり、「Ctrl+B」,「Ctrl+C」を使用して送信することはできました。 しかし、一文字ずつの送信となり、一つのまとまったコマンド(文字列)として送信することができません。 STXやETXを含むコマンド(文字列)を送信する方法がわかる方がいらっしゃいましたら、是非教えていただけないでしょうか。 よろしくお願いいたします。 <送りたいコマンドの例>  STX+コマンド+ETX