• ベストアンサー

Cシェルの制御文について(求むCシェル・マスター)

Cシェルでとある処理をすることになり、参考資料としてスペシャリストな人の シェルをみせてもらったのですが、ソースを読むこともままなりません(><) 私自身はVisualStudioを使ってCのプログラミングをかなり前にちょろっとやった程度で、 シェルというものをほとんど組んだことがないので、以下の点を教えてください。 if [ほにゃらら] then コマンドをぽちっとな elif [はにゃらら] then コマンド2をぽちっとな else exit fi 上記のような制御文を参考資料の中で多数みるのですが、 "elif"と"fi"が、まったく何者かわかりません。 Cシェルやelifなどで、ぐぐってみましたが、わからず 誰か助けてぇ~って感じです。 また、シェルの勉強サイト(C,Tc,B,Bash)のサイトも ありましたら教えてください。すんませんが、よろしくお願いします。

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

  • ベストアンサー
  • qwer021
  • ベストアンサー率24% (70/281)
回答No.2

if [ほにゃらら]      もし [ほにゃらら] なら then コマンドをぽちっとな elif [はにゃらら]     [ほにゃらら]でない時 [はにゃらら]なら then コマンド2をぽちっとな else            [ほにゃらら]でも[はにゃらら]でも無い時 exit fi             if文の終わりを意味します(ifとついになります) これで解りますか?

apnea
質問者

お礼

大変わかりやすいです(^-^) 一文一文解説ありがとうございます。

その他の回答 (3)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.4

if [ほにゃらら] then コマンドをぽちっとな elif [はにゃらら] then コマンド2をぽちっとな else exit fi この形式はB系シェルの文法ですね。 if [ 条件1 ]; then   処理1 elif [ 条件2 ]; then   処理2 else   処理3 fi シェルの種類はだいたい以下の感じです。 sh (Bourneシェル) 最も基本的なシェル bash (Bourne Againシェル) shの高機能版 Linuxで標準 ksh (kornシェル) 米国AT&Tで開発された高機能シェル csh (Cシェル) 構文がC言語に似ているシェル Solarisで標準 tcsh (TCシェル) cshの高機能版 FreeBSD、MacOSXで標準 zsh (Zシェル) B系シェル(ksh)とC系シェル(tcsh)の両方を備えた高機能シェル apneaさんはどのOSでどのシェルを使う予定なのですか?

apnea
質問者

お礼

ご回答ありがとうございます。 この中で知っている(シェルとして見たことがある)のはbash,cshくらいですねぇ。 shは環境変数をセットするときにちろっと使うくらいで、 ごりごりと書いたことも、うりうりと書いてあるのを見たこともなかったもので・・・(笑)

apnea
質問者

補足

UX4800とかいうSystemV系(?)のOSです 私にはディープかつマニアックなOSに見えてしまってます。 つい最近まで、そんなもん名前も聞いたことなかった(⌒-⌒;

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.3

とりあえず、回答は他の方々の通りですが、 Cシェルではないと思いますよ。 Cシェルだったら if (ほにゃらら) then コマンドをぽちっとな else if (はにゃらら) then コマンド2をぽちっとな else exit endif みたいな感じですからね。

apnea
質問者

お礼

参考資料のシェルを見直して自爆していたことに気づきました。  #! /sbin/sh となっていました(^-^; すんませんです。ちゃんと見てなかったようです (先週の私の目には/sbin/cshと見えていた気が・・・)

  • ribisi
  • ベストアンサー率28% (247/864)
回答No.1

elifは、いわゆる else if、 fiは、いわゆる end ifの意味です。 初めてfiを見たときには笑ってしまいました。 なんでも、単純にifを逆さにしただけだとか。 Linuxサーバーの~/bashrcとかにちょこっと 処理を加えたいことがあって、参考書を読んだことがあります。 ソフトバンクの『入門UNIXシェルプログラミング』 という本ですが、わかりやすかったです。

apnea
質問者

お礼

回答ありがとうございます。 教えていただいた本も探して読んでみようと思います。

関連するQ&A