- 締切済み
UNIXのシェル
シェルに関して質問です。 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 -----------------------------
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- OKwebb
- ベストアンサー率44% (92/208)
補足の補足 Solaris だったら find コマンドの -prune オプションで似たようなことができたはず。 検証環境がないので申し訳ないですが。
- OKwebb
- ベストアンサー率44% (92/208)
#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 だったら使えないか。ごめんなさい。
- OKwebb
- ベストアンサー率44% (92/208)
確認がいくつか 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を用いて文字列のチェックはできますでしょうか?