• ベストアンサー

Cシェルについて

Cシェルについて素人な為、 初歩的な質問となりますが、ご教授お願い致します。 Cシェルのif文についてですが、 IF XXX = 1 --処理-- endif と記述したのですが、 「IF:コマンドがみつかりません。」というメッセージが 表示されました。 Cシェルでは、if文は大文字ではいけないのでしょうか? また、その時の"="は2つ続けないと駄目なのでしょうか? 初歩的ですいませんが、宜しくお願い致します。 合わせて、何か役に立つホームページなども教えていただければ幸いです。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

cshのif文は以下の通り。 if (式1) then 命令文1 else if (式2) then 命令文2 else 命令文3 endif cshでは「C言語がそうであるように、命令語、語句の大文字と小文字は区別する」と言う事になっているので、大文字だとif文になりません。 if文に使える演算子も、ほとんどC言語と同じで == 等しいか != 等しくないか になっています。 cshの名前の由来について「bashの次だからcsh」と言う説の他に「C言語に似てるからcsh」という説もあるくらい、C言語に似ています。 (if文にthen句があるのはCに似ていませんが…)

Soccer1919
質問者

お礼

お礼が遅れてしまい申し訳ありませんでした。 御回答ありがとうございました。 C言語もあまりよく理解していないので これから少しずつでも理解していきたいと思います。

その他の回答 (2)

  • hamaddux
  • ベストアンサー率0% (0/3)
回答No.3

"="は二ついりますね。 大文字もNGじゃないかな?←自信無し。 あと、( )は必要だと思いますよ。 if(XXX==1) のように。 "="が二ついるのは、次のように使う事が多いからじゃないかな?深くは知りませんが。 (XXX!=1) (XXX>=1) (XXX<=1) (XXX>1) (XXX<1) 等。ついでに、and条件追加の時は"&&"、or条件追加の時は"||"で区切る。(XXX>=0 || XXX<1000)みたいに。

Soccer1919
質問者

お礼

お礼が遅れてしまい申し訳ありませんでした。 御回答ありがとうございました。 いろいろと言語によって異なるので、 いつもの通りで記述していました。 やはりその言語の特徴をもう少し理解していきたいと思います。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

man cshでリファレンスが表示されるならそちらを一度お読みになってみたらいかがでしょうか? 下記ページですが書かれた時期が古く「なぜcshでプログラムを書くのが良くないのか」という内容ですが暇があったときにでも見てみてください。 ○Csh Programming Considered Harmful (in Japanese)  http://faqs.jmas.co.jp/FAQs/csh-whynot-jp #1の方がcshの名前の由来を書いていらっしゃってますが、(主に商用UNIXの)リファレンスマニュアルにあるcshの簡単な説明は「a shell (command interpreter) with C-like syntax」つまり「C 言語スタイルの構文を備えたシェル (コマンドインタプリタ)」とあるようにC言語に似ているのが名前の由来です。 参考) UNIX 用語 由来/読み方辞書 version 1.6 (Feb 13 1995) http://www.cjn.or.jp/docs/dic/unix-term-dic.html

Soccer1919
質問者

お礼

お礼が遅れてしまい申し訳ありませんでした。 御回答ありがとうございました。 参考として頂きましたHPを早速読んでみたいと思います。

関連するQ&A

  • Bシェルのif文

    if文の否定について教えてください。 if $aa='xxx' then else echo yyy fi 間違っているかもしれませんが上に書いたことをやろうとしています。 他の言語の if(!($aa='xxx'))echo yyy; をBシェルのif文で書くにはどうしたらいいですか? $aa='xxx'を$aa!='xxx'にするのではなくて、その外側のifの書式を教えてください。 最初に書いたコードでは、if(!条件)を知らないので if(条件) else 処理 endif のように書きました。

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

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

  • Cシェルについて

    Cシェルについて #! /bin/csh ##! /bin/csh -vx setenv NOHUP '/usr/bin/nohup' set AAA_CSH = $NOHUP' XXX.sh file.txt &' ($AAA_CSH >> /dev/null) >>& err.log シェルスクリプトを作成して上記のとおりnohupでXXX.shを実行するように記述します。 エラーがあった場合、err.logに出力するように作成したつもりなのですが、 XXX.shがなかったとき、 「/usr/bin/nohup: XXX.sh:そのようなファイルまたはディレクトリはありません。」 と標準出力されてしまいます。 このエラーメッセージをerr.logに記述するようにしたいのですが、 どうしたらよいでしょうか? よろしくお願いいたします。

  • CシェルとCOBOLについて

    初めて質問させて頂きます。 初心者の為、あまりうまく質問が出来るかどうかわかりませんが宜しくお願い致します。 今、 CシェルからCOBOLを呼び 呼ばれたCOBOLの内部で処理をしています。 そこで、 COBOLの内部で処理した値を呼び元のシェルに返すことは 出来るのでしょうか? 返す項目は、複数あり数値項目、文字項目両方あります。 プログラムのほうもあまり詳しくはありませんので、 初歩的な質問かも知れませが、 何方かご教授願いませんでしょうか。

  • シェルプログラムの判定について

    皆さんのお知恵をお貸しください シェルはcshです 目的set name = $<で$nameに入る文字が+-*/(一文字毎です)の時エラー処理をしたい 現状下記のプログラムですが判定出来ません set xx = $< set moji = `grep -c '[\-\+\*\/]' xx` if ( $moji == 1 ) then echo 文字に誤りがあります endif  else if ( $moji == 0 ) then echo OKです endif +-*/が入った時にエラーを出したいのですが+-*/をどう判定したらよいのか教えて頂けます様お願い致します。

  • シェルからpsqlコマンドでトランザクション

    標題についてご教授下さい。 シェル内でpsqlコマンドから オプション c にて BEGIN ↓ DELETE ↓ COPY xxx FROM xxx.sql ↓ COMMIT の流れでシェルコマンドを実行したいのですが、 いい方法ありますでしょうか。 もちろんエラーハンドリングもしたいです。 COMMIT前に エラーがあったらROLLBACK したいです。 シェルだと難しいのでしょうか。

  • Cシェル内で自動ログアウトさせたいんです。

    今、私が作っているのは、UNIXコマンドを知らない人達に、 一時的にTera TermよりUNIX機にログインして簡単な作業を してもらう為のCシェルです。 ほとんどコマンドを知らないわけですから、なるべくなら ログイン時にそのCシェルが起動して、作業を終えたら (シェルを終了したら or シェル内部で)自動的にログアウト するような物を作りたいのです!(~Q~;)。 つまり、なるべく変な事して欲しくないと。。。言うことなのですが、 まだ私がCシェル初心者なもので、やり方が解りません。 何か良い方法がありましたらお願い致します<(__)> ちなみに、SunOS 5.6 Solarisです。

  • Cシェルでの文字列大小比較

    Cシェルで set AA="aa" set BB="bb" if( $AA > $BB )then echo "$AA > $BB" endif というような判定がしたいのですが、 上記の場合、”if: 条件式構文が正しくありません”というエラーが出力されます。 Cシェルの場合、文字列の比較は ifでイコールかノットイコールかは判定できますが、文字コードの大小比較が出来ないようですが、 文字列の大小比較をするにはどうすればよいのしょうか

  • kシェルスクリプト内に行を挿入

    kシェルスクリプトで質問です。 例えば、以下のようなファイルがあったとします ********************************************** #!/bin/ksh   if (条件式1) then   コマンド1   コマンド2 endif if (条件式2) then   コマンド3   # aaaaaaaaaa else   コマンド4 endif ********************************************** ”コマンド3”の文字列をキーにして"# aaaaaaaaaa"の下に 「echo ttttttttt」 と、を追加するといった方法、ないでしょうか? もちろん、viで開いて追加する・・・というのではなく、、、 awkやsed等々、コマンドで。ご存知の方いらしたらお願いします。 ps. 余力があればjavaでも検討したいとは思いますが、javaはまったく初心者。。

  • Cシェルでエラーハンドリングする方法について

    Cシェルでエラーハンドリングする方法について 特定のファイルをしたのディレクトリに移動させる際、特定ファイルがなければ、処理を終了するという記述の仕方を教えていただきたいです。 すでに、以下のように記述をしてファイルを指定したディレクトリへ移動する動作確認はできています。 ------------------------------------------ set dir1=/export/home/username/test1_dir set dir2=/export/home/username/test2_dir mv ${dir1}/*.log /export/home/username/mv_dir mv ${dir2}/*.csv /export/home/username/mv_dir ------------------------------------------ この場合、*.log、*csvがディレクトリ内に存在すれば、移動先ディレクトリへ移動し ファイルがなければそのまま終了しています。 ファイルがなかったとしても、シェルが実行中のまま終わらなかったり エラーがでてしまうことはありませんでしたが、 念のため、ファイルが存在しない場合、何もせず処理を終了する というエラーハンドリング処理を入れたいと思うのですが、 どのように記述したらよいでしょうか? if (条件式) コマンド行 で実施ができるのか?と思うのですが どのような記述となりますでしょうか。