- PR -

シェルスクリプトについて

1
投稿者投稿内容
トマソン
会議室デビュー日: 2002/06/27
投稿数: 18
お住まい・勤務地: 東京23区
投稿日時: 2003-05-19 13:59
お世話になっております。
シェルスクリプトについて一点伺いたいことがあります。

カレントディレクトリがあるディレクトリ以下のときに
コマンドを実行させないようにしたいのですが
ちょっとうまく表現できないでいます。

カレントディレクトリ(pwdで取れます)が
/dirとか/dir/aとか/dir/a/bとか/dir/cとかの場合
exitさせるというのをうまくif文にしたいのですが

C_DIR=`pwd`  (カレントディレクトリ)
として
if [ $C_DIR = /dir/* ]とかにしてしまうと
「パラメータが多すぎます」とか言われてしまいます。

なにか参考になるネタがあるようでしたら
教えて頂けないでしょうか?
raccoon
ベテラン
会議室デビュー日: 2002/12/18
投稿数: 58
投稿日時: 2003-05-19 17:02
おそらく期待しているのとは違うやり方だとは思いますが・・・。

判定するディレクトリが決まっているなら(ってか,決まっていないと判定できませんね),
cutかawkあたりで文字列を切り取っちゃってはどうでしょう。
/dirならこんな感じ。

DIR_PREFIX=`pwd | cut -d'/' -f-2`
if [ "$DIR_PREFIX" = '/dir' ]

awkでもできるでしょう。awkは便利ですが,オーバースペックで処理が重そうなので,
文字列の切り取りだけなら,わたしはcutを使うことが多いです。
(シェルスクリプトで重さを気にするのはバカバカしいことかも知れませんが)


[ メッセージ編集済み 編集者: raccoon 編集日時 2003-05-19 17:44 ]
トマソン
会議室デビュー日: 2002/06/27
投稿数: 18
お住まい・勤務地: 東京23区
投稿日時: 2003-05-19 18:50
racconさんありがとうございます。
/dirなら/dirにだろうが、/dir/aでも/dir/a/bでも
/dirが必ず該当するってことですね。

ちょっと取り入れていろいろ実験してみます。
ありがとうございました。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-05-19 22:35
/etc/rc.d/init.dあたりのスクリプトを参考にしてみてはいかがでしょう。

C_DIR=`ls -R`
for DIR in C_DIR; do


って感じと思いますが。
1

スキルアップ/キャリアアップ(JOB@IT)