- - PR -
Cシェルの構文について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-15 15:03
Cシェルの構文について教えていただければと思います。
lsの結果で拡張子が.cshのファイルを洗い出す予定なのですが 『"$KAKUCYOU"』の部分が間違っているようなのです。 ----------------------------------------------------------- #!/bin/csh set KAKUCYOU = ".csh" ls | nawk '{if ($1 ~ "$KAKUCYOU"){printf "%s\n",$1}}' ----------------------------------------------------------- | ||||||||||||||||
|
投稿日時: 2008-08-15 15:24
ls *.csh
ではだめなのですか? または ls |grep '.csh' では | ||||||||||||||||
|
投稿日時: 2008-08-15 15:31
deannaさん、ご回答ありがとうございます。 質問文の内容がいまいちだったのですが この構文のどこがまずいのかが分からないので 困っていたのです。(勉強をかねているので) | ||||||||||||||||
|
投稿日時: 2008-08-15 21:10
こんばんは。
csh文法を敢えて勉強する、というのはお勧めではないのですが…。 問題となるのは、クォートで囲まれた部分での変数展開です。 単純な例として、変数 kakucyou に設定した内容を単に出力するスクリプトを考えてみると、 ・例1. 質問内容と同等
・例2. クォートの違い
・例3. では、".csh" という出力にするには?
それぞれ試して違いを見てください。 | ||||||||||||||||
|
投稿日時: 2008-08-15 21:17
なお、余談ですが、csh文法を勉強するよりも、sh系 ( ksh/bash等 ) のスクリプトを勉強する方がお勧めです。
それと、シェルスクリプトに重要なのは、文法というよりも、個々のコマンドの使いこなしなので、 deanna さんのように、“ls *.csh”や、“ls | grep .csh”といった、代替のコマンドを直ぐ出せる力の方が重要です。 ※他にも“find . -name '*.csh'”とか ※元のスクリプトだと、“a.csh.bak”も引っかかるけど良いのか、というようなツッコミもあります あくまで余談ですが。 | ||||||||||||||||
|
投稿日時: 2008-08-18 09:59
を試す際に、bashだと bash -x で起動した環境で実行することで、 変数・エイリアス等の展開状況が確認できます。 cshは知りませんが、tcshにも-xで同様なことができるみたいですね。 実行されるコマンドラインがどう振舞ってるのかを確認する術を 身につけるのも重要だと思います。 | ||||||||||||||||
|
投稿日時: 2008-08-18 10:12
angelさん、回答ありがとうございます。 (例1、例2、例3)の違い理解できたと思っています。 元々のシェルの部分で set KAKUCYOU = ".csh" を set KAKUCYOU = .cshに変更すれば うまく行くかと思ったのですが駄目でした。 もう少し考えて見ます。 | ||||||||||||||||
|
投稿日時: 2008-08-18 14:09
Mattunさん、ありがとうございます。 cshも「-x」でデバッグのような情報が参照できました。 |