シェルに関して質問です。
0526とか0525のところは一日ごとにフォルダが作成されます。

unix\yasu\0526\hobby\test.txt
unix\yasu\0526\hobby\test.txt
unix\tomo\0525\hobby\test.txt
unix\tomo\0525\hobby\test.txt

./check.sh MMDD
実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。
引数に指定した文字を判定するにはどうしたらいいのでしょうか?
よろしくお願いします。
-----------------------------
#シェルの名前は「check.sh」です
#! /bin/sh
if [ $1 = "日付" ] ;
then
コマンド1
else
コマンド2
fi
-----------------------------

A 回答 (3件)

補足の補足



Solaris だったら
find コマンドの -prune オプションで似たようなことができたはず。
検証環境がないので申し訳ないですが。
    • good
    • 0

#1 補足


> 2.できれば日付でチェックしたいですが、
チェックするのであれば
find=`find /unix -mindepth 2 -maxdepth 2 -type d -name $1`
の前に$1をチェックしてください。
Solaris だったら
> 「TZ」を前日日付(-15時間)に指定すればいい
でうまくいくと思いますけど。

> findコマンドで「-mindepth 2 -maxdepth 2」というのはどのディレクトリを指すのでしょうか?
/unix を 0として2つめの深さです。
検証してるのがLinuxなので、オプションは違う可能性大ですね。
Solaris だったら使えないか。ごめんなさい。
    • good
    • 0

確認がいくつか


1.以下2行及び次の2行は全く同じだと思いますがこれは間違いですよね?
> unix\yasu\0526\hobby\test.txt
> unix\yasu\0526\hobby\test.txt
2.チェックしたいのは引数とディレクトリの3番目の比較であって別に日付に限らなくていいんですよね?
3.チェックしたいのはディレクトリが存在するかどうかであって、yasuにしかないまたはtomoにしかなくてもいいんですよね?
こんな感じかな

#/bin/sh
find=`find /unix -mindepth 2 -maxdepth 2 -type d -name $1`
if [ -n "${find}" ]; then
コマンド1
else
コマンド2
fi

この回答への補足

確認について補足します。
質問が適切でなくてすみませんでした。

1.日付違いのフォルダでした。以下が正しいです。
unix\yasu\0526\hobby\test.txt
unix\yasu\0525\hobby\test.txt
unix\tomo\0526\hobby\test.txt
unix\tomo\0525\hobby\test.txt

2.
できれば日付でチェックしたいですが、日付でなくとも構いません。
日付であればよりよいというだけです。
日付であればシェルの中で、「TZ」を前日日付(-15時間)に指定すればいいのかと思ったのですが、envをうってみても「TZ」が出てきませんでした。
cygwinを使用しているからでしょうか?

3.そうです。

追加の質問なのですが、findコマンドで「-mindepth 2 -maxdepth 2」というのはどのディレクトリを指すのでしょうか?

また、stringを用いて文字列のチェックはできますでしょうか?

補足日時:2009/05/28 08:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報