トップページunix
1001コメント312KB

シェルスクリプト総合 その6

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001うはwwwww2006/03/26(日) 00:56:22
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
0833名無しさん@お腹いっぱい。2006/07/25(火) 23:30:41
>>832 は社宅を追い出されたことがあるの?
0834名無しさん@お腹いっぱい。2006/07/26(水) 11:13:09
dateコマンドを使う方法だと、1969年以前の日付や、2038年以降の日付に対応できないな。
0835名無しさん@お腹いっぱい。2006/07/26(水) 12:02:44
つcal
0836名無しさん@お腹いっぱい。2006/07/26(水) 12:19:54
>>835 は質問の意味を取り違えているようだ。
0837名無しさん@お腹いっぱい。2006/07/26(水) 12:25:09
日付から曜日求める Zellerの公式を使って expr で計算すればできるな。
あと、日付の正当性チェックは閏年、大小の月で case文あたりで場合わけ判断と。
とは言っても、シェルスクリプト自体超初心者の >>825 には無理。
リストラされろ。
0838名無しさん@お腹いっぱい。2006/07/26(水) 13:00:24
>>825-838
>>407-413
0839名無しさん@お腹いっぱい。2006/07/26(水) 13:02:49
>>1を読めまで読んだ
0840名無しさん@お腹いっぱい。2006/07/26(水) 13:23:45
>>838
欲嫁。>>408 では日付の正当性チェックはできてない。曜日計算のみ。
あと、曜日計算なら >>408 よりももっと簡単にできる。
0841名無しさん@お腹いっぱい。2006/07/26(水) 22:41:35
>>825
どうしても解決したいなら、有料でもいいのだろ?
職業別電話帳見ると、街の便利屋さん(何でも屋さん)みたいなの載ってるだろ。
そこに電話して頼め。
もちろん、その便利屋さん本人はshellだのUNIXだの言っても知らないだろうが、
相手もプロだ。shellとかUNIXとかキーワードを頼りにそれ関係の詳しい人に
取り次いで問題を解決してくれる。特殊な用件だから少々高く取られるかもね。
0842名無しさん@お腹いっぱい。2006/07/28(金) 14:25:42
これなんかどう?
# valid-date - validate date, taking into account leap year rules
ttp://www.intuitive.com/wicked/showscript.cgi?007-valid-date.sh
0843名無しさん@お腹いっぱい。2006/07/30(日) 13:16:38
すごくダさいと思った
0844名無しさん@お腹いっぱい。2006/08/05(土) 11:51:54
超初心者的な質問ですが優しい人、教えてください。

Grepを使った検索スクリプトについて

1) あるテキストファイル(Pattern.txt)に検索対象文字列が改行単位で入っている。
2) この文字列ひとつひとつをパターン文字として、/apl/usr配下のファイルをGrepしたい。
3) 最終的にRESULTファイルに以下のような形式に保存したい。(RDB取込用ファイルの作成)
     <検索対象文字列> , <ヒットしたファイル名>

多分、Ptternファイルを一行ずつ読み込んで、Grepする処理を
ループさせるようなスクリプトになると思うんですけど・・

0845名無しさん@お腹いっぱい。2006/08/05(土) 12:31:30
http://pc8.2ch.net/test/read.cgi/unix/1152364804/532
はいはい、マルチマルチ。
0846名無しさん@お腹いっぱい。2006/08/06(日) 00:31:32
質問です
CGIやPHPでシェルスクリプトを実行するにはどうしたらできますか?
実行方法がわからないのでおしえてください。
0847名無しさん@お腹いっぱい。2006/08/06(日) 00:45:02
>>846
(1)先頭に
#!/bin/sh
のように陽にshellのmagicを書いておいて、
(2)CGIやPHPが動くときのuser id での実行許可をたてて、
(3)system()やexec()を呼ぶ。スクリプトのパスは原則フルパスで。
0848名無しさん@お腹いっぱい。2006/08/06(日) 00:46:03
>>847
ちょw
08498472006/08/07(月) 03:14:47
え?駄目かえ?厨なりに一所懸命に考えたんだが。
0850名無しさん@お腹いっぱい。2006/08/07(月) 03:36:41
(1) ホームセンターに行き鉄定規を購入
(2) CGI鯖のあるプロバイダに接続
(3) 鉄定規をF5キーの箇所に置き、ハイパーオリンピックの要領で弾く
(4) 頃合いを見て80番ポートからログイン
(5) 自分のディレクトリの実行許可を書き換え
(6) /bin/shを実行
0851名無しさん@お腹いっぱい。2006/08/07(月) 03:54:34
>>849
CGIとPHPが一緒くたな時点で「ちょw」
CGIは文字通りインターフェースだから、シェルスクリプト自体を直接実行できるのをわるれるな。
0852名無しさん@お腹いっぱい。2006/08/07(月) 09:06:47
「わるれるな」に、ちょw
0853名無しさん@お腹いっぱい。2006/08/11(金) 23:09:46
% echo a:~
a:~

となるのに、
% a=a:~
% echo $a
a:/home/giko
となるのはなぜですか?
0854名無しさん@お腹いっぱい。2006/08/11(金) 23:44:49
なんでだろね♪
0855名無しさん@お腹いっぱい。2006/08/12(土) 00:27:26
bashだからか?
0856名無しさん@お腹いっぱい。2006/08/12(土) 00:43:01
>>855
NetBSD の sh と zsh でそうなりました。
0857名無しさん@お腹いっぱい。2006/08/12(土) 00:57:13
$ a=a:~; export a
$ export a=a:~

このふたつの違いを考えてみるとわかる。
~ がコマンド引数の一部なのか、変数代入文なのか。
0858名無しさん@お腹いっぱい。2006/08/12(土) 01:16:36
>>857
どっちの echo $a の結果は同じなのですが…
0859名無しさん@お腹いっぱい。2006/08/12(土) 01:34:16
うそーん。うちの sh は違う結果になるが。
0860名無しさん@お腹いっぱい。2006/08/12(土) 01:35:05
うちの、つーてもわからんか。FreeBSD 5.4 の /bin/sh。
0861名無しさん@お腹いっぱい。2006/08/12(土) 16:04:10
なんでだろ〜おなんでだろ〜
0862名無しさん@お腹いっぱい。2006/08/12(土) 16:44:30
PATH=~/hoge:~/fuga
てことがしたくて変数代入のときだけ小細工してるから
0863名無しさん@お腹いっぱい。2006/08/12(土) 19:24:24
Tilde Substitution.

After alias substitution is performed, each word is checked to see if it begins with an unquoted ~. For tilde substitution, word
also refers to the word portion of parameter expansion (see ParameterExpansion below). If it does, then the word up to a / is
checked to see if it matches a user name in the password database (often the /etc/passwd file). If a match is found, the ~ and
the matched login name are replaced by the login directory of the matched user. If no match is found, the original text is left
unchanged. A ~ by itself, or in front of a /, is replaced by $HOME. A ~ followed by a + or - is replaced by the value of $PWD and
$OLDPWD respectively.

In addition, when expanding a variable assignment, tilde substitution is attempted when the value of the assignment begins with
a ~, and when a ~ appears after a :. The : also terminates a ~ login name.

つまり普通はワードの先頭が~のときしかtilde substitutionが行われないが、変数代入のときだけは:の後でもやる
というわけね。これはいかにも知ってないと混乱しそうな仕様だな。便利は便利なのだろうが。
0864名無しさん@お腹いっぱい。2006/08/12(土) 22:10:32
HOME_DIR="/export/home/.../..." ; export HOME_DIR
このような書き方を良く見かけるんだが、2行に分けず
1行にまとめて書いてるのは、何か技術的な理由があるの?
それとも、ただ単に行の節約とか見やすさを考慮しただけ?
0865名無しさん@お腹いっぱい。2006/08/12(土) 22:20:56
書いた奴の気分
0866名無しさん@お腹いっぱい。2006/08/12(土) 22:39:34
export HOME_DIR="/export/home/.../..."
このような書き方を良く見かけるんだが、2行に分けず
1行にまとめて書いてるのは、何か技術的な理由があるの?
それとも、ただ単に行の節約とか見やすさを考慮しただけ?
0867名無しさん@お腹いっぱい。2006/08/12(土) 22:47:22
# 一個でコメントアウトできる。(という事まで考えているかは知らない)
0868名無しさん@お腹いっぱい。2006/08/17(木) 16:30:16
20060817ってな感じの日付を
基準時点 (UTC の 1970 年 1 月 1 日 00:00:00; time(3) 参照) からの秒数
に変換するスマートなやりかた教えて
0869名無しさん@お腹いっぱい。2006/08/17(木) 16:40:48
>>868
date -u +%s -d 20060817
0870名無しさん@お腹いっぱい。2006/08/17(木) 16:42:31
% date -d 20060817 +%s
1155740400
0871名無しさん@お腹いっぱい。2006/08/17(木) 16:42:49
うちのdateだとこうかな
date -j -f "%Y%m%d%H%M%S" 20060817000000 +%s
0872名無しさん@お腹いっぱい。2006/08/17(木) 16:42:50
20060817がJSTなら -u は要らない。
date +%s -d 20060817
0873名無しさん@お腹いっぱい。2006/08/17(木) 17:23:45
>>866
・その文法しか知らないから
・その文法をサポートしている OS でしか動かす予定がないから
・その文法をサポートしてない /bin/sh を持つ OS への嫌がらせ
のいずれか
0874名無しさん@お腹いっぱい。2006/08/17(木) 17:28:15
>>866 は、質問じゃなくて >>864 の修正コピペだろ。

で、>>864 は、>>866 的な exportと代入を同時にやる bash依存文法に反対する意味をこめて
あえて1行で書いてるんだと思う。

でも、俺的には

HOGE=hoge
HAGE=hage
export HOGE HAGE

↑の書き方が好み。
08758682006/08/17(木) 18:07:27
サンクス
869,870は無理だった
871でおk FreeBSD

0876名無しさん@お腹いっぱい。2006/08/17(木) 18:17:31
>>874
export VAR=value
をbash依存文法とする根拠を述べよ。


0877名無しさん@お腹いっぱい。2006/08/17(木) 18:34:09
>>876
「bashで使えて Bourne shで使えないから」そのままやん。

先に言っとくと、*BSDのsh=ash≠Bourne shだからね。
0878名無しさん@お腹いっぱい。2006/08/17(木) 18:37:17
>>876
やれやれ。最近は export VAR=value がbash依存文法であることも知らない新参者が多いのう。
0879名無しさん@お腹いっぱい。2006/08/17(木) 18:48:28
なぜかほこらしげ
0880名無しさん@お腹いっぱい。2006/08/17(木) 19:50:30
>>878
bash依存というより、ksh依存といった方が正しい。
0881名無しさん@お腹いっぱい。2006/08/17(木) 20:06:58
bash依存というけれど他がbashに合わせるべきだよね。
立場をわきまえないと。
0882名無しさん@お腹いっぱい。2006/08/17(木) 22:22:58
ああ、どれが釣りなのかわからん…

"export var=value"という書き方はPOSIXシェルで有効な文法で、
bash依存の仕様と言うわけではない。
SolarisではkshはPOSIXとの互換性を使いたい場合のシェルで、
/bin/shは上記文法を受け付けず、POSIXに準拠しない。
0883名無しさん@お腹いっぱい。2006/08/18(金) 00:24:41
>>878
POSIXくらいは確認してから書こうな。テンプレにも入れてあるんだし。
0884名無しさん@お腹いっぱい。2006/08/18(金) 00:47:04
で、POSIX準拠かどうかということが実践では役に立たないのも事実なわけで、
POSIXよりも、「/bin/shで使える文法かどうか」の方が重要。
0885名無しさん@お腹いっぱい。2006/08/18(金) 01:17:06
/bin/shがPOSIX準拠でないOSにはそろそろ引退してもらいましょう
0886名無しさん@お腹いっぱい。2006/08/18(金) 02:45:19
仕事で使うなら、いいわけもえり好みもできない。
だから確実性が最優先だし、選択肢が存在すると考えること自体が間違い。
/bin/shが何者か分からなければ、bourne shellサポート範囲内かつbash拡張範囲外で書くべき。

POSIXシェルでなければならない理由が本当にあるかどうか分からないが、
もし仮に本当に必要ならば明示的に指定して使ってやればいいんだよ。
/bin/bashや/bin/xpg4/sh(Solaris)や/bin/ksh(Solaris)が存在するなら
ベンダが保証したPOSIXシェルとして使えるんだから、
何者か分からない/bin/shをおっかなびっくり使うよりマシ。
0887名無しさん@お腹いっぱい。2006/08/18(金) 07:39:23
autoconfが生成するconfigure.shはnon-POSIXでも動くよう書かれているんだよね...
0888名無しさん@お腹いっぱい。2006/08/18(金) 07:57:41
そういうクズなシステムを例にだしてもなんの意味も無い。
0889名無しさん@お腹いっぱい。2006/08/18(金) 08:11:18
一番混乱させているのが、*BSD。

Linux(の多くのディストロ)は標準をbashと決めているから、そういうものとして理解すればいいが、
*BSDの/bin/shはそれぞれで勝手に拡張されているし、バージョンによってコロコロ変わってたりするから、
わかりにくい。
0890名無しさん@お腹いっぱい。2006/08/18(金) 08:14:41
FreeBSDのshで、printfが外部コマンドに変更されたのは許せん。
0891名無しさん@お腹いっぱい。2006/08/18(金) 08:31:30
実装違いに悩まされないためにPerlで書いてしまう手もあるが
やはり/bin/shで何とかするのが心意気というものであろう
0892名無しさん@お腹いっぱい。2006/08/18(金) 11:31:48
実行前にshを調べてperlで整形すれば解決ですよ。
0893名無しさん@お腹いっぱい。2006/08/18(金) 17:59:00
HOGE=abcd export HOGE
でも設定出来るのになんでセミコロン入れるんだろ?
0894名無しさん@お腹いっぱい。2006/08/18(金) 18:05:10
>>893
古いシェルだと、内部コマンドに対して HOGE=hoge のような変数の指定が
うまく動作しないものがある。だから ; を入れるのが吉。
0895名無しさん@お腹いっぱい。2006/08/18(金) 18:10:06
いや、HOGE=hoge export HOGE の場合、
exportという1コマンドに対してのみ一時的に HOGE=hogeという環境変数を設定する、
という動作が本来の仕様なのだから、
HOGE=hoge export HOGE (セミコロンなし)でもexportできてしまう方がバグと思われる。
(古いシェルの動作が正しい)

たとえば、
HOGE=hoge printenv HOGE
だと、printenvコマンドではhogeが表示されるが、
その後はHOGEは未設定になる動作が正しい。exportでもそうなるべきだ。
0896名無しさん@お腹いっぱい。2006/08/19(土) 05:48:58
過去のしがらみも古参の権威もなくPOSIXしか拠り所のないlinuxはPOSIX優等生。
うちは昔からこうやってるなんて言いだす傲慢さは無い。
最古参のBSDは困ったちゃん。
0897名無しさん@お腹いっぱい。2006/08/19(土) 08:01:41
>>896
LinuxはPOSIXに準拠してないよ。拠り所は GNU。
GNUの独自拡張だろうが、GNUで使えれば事実上の標準になってる。
0898名無しさん@お腹いっぱい。2006/08/19(土) 09:03:50
つーか、「便利ならいいじゃん」がLinux。
そういって、95年当時にLinusが事務処理にはWindowsを使っ
ていたことは公然の秘密だ。
0899名無しさん@お腹いっぱい。2006/08/19(土) 09:18:08
>>896
POSIX準拠なのはLinuxだけじゃないし、opengroupのUNIX認証を通ってないから
結局のところPOSIX準拠であることを第三者に証明できない。
優等生ってのは言い過ぎじゃないかなあ。

>>897
「GNUで使えれば」ってどういう意味よ? 説明してみて。
0900名無しさん@お腹いっぱい。2006/08/19(土) 14:21:52
opengroupのUNIX認証を通ってないから<-誤り
UNIX認証を受けてない、メンバーにも入れてもらえない。
もしUNIX認証を受けるにしてもデストリごどになる。
linuxにUNIXを実装する事自体は容易、ほぼそのままでもいけるか。
現状はlinuxである方が有理なのでUNIX認証にはあまり興味が無い。
linuxはlinux認証を立ち上げた。
0901名無しさん@お腹いっぱい。2006/08/20(日) 00:57:46
>>895
exportが、値を何というか環境に担ぎ出して固定する
ようなイメーヅだと思えば不思議じゃない。

$ HOGE=hoge HOGE=hoge

とやった後にHOGE=hogeに設定される、
そういう効果をもともと持つコマンドがexportってこと。
0902名無しさん@お腹いっぱい。2006/08/20(日) 03:54:31
> opengroupのUNIX認証を通ってないから<-誤り
> もしUNIX認証を受けるにしてもデストリごどになる。

ほほう、UNIX認証を受けたLinuxディストリビューションが
1つでも存在するのならば知りたいものだね。興味がある。

で、「Linux認証」なるものが仮に標準たりうるとしても、
それは>>896の言う「BSDの権威」とどう違うのよ?という話。
0903名無しさん@お腹いっぱい。2006/08/20(日) 13:15:37
Linux認証?
0904名無しさん@お腹いっぱい。2006/08/20(日) 14:05:04
http://www.google.co.jp/search?q=linux+iso+%E8%A6%8F%E6%A0%BC+&hl=ja&lr=&start=0&sa=N
たぶん失敗する、なんら権威の根拠とはならないだろう。
今linuxにおける権威はRedHat、Debian、Fedora、そしてリーナスである。
一見上層に見える色々なlinux関連団体は実はなんら支配力も実効力も持っていない。
Fedoraを怒らせたらStallmanだって追放されるだろうよ。
StallmanはFedoraを抱き込んでxFree86を追放した、そういう権力構造。

>>902
その前にunixの会員になるのにいくら金積めばいいのか教えてくれ。
0905名無しさん@お腹いっぱい。2006/08/20(日) 15:48:52
Stallmanを追放って...
追放が可能なためには、まずは所属してないと。
0906名無しさん@お腹いっぱい。2006/08/20(日) 20:10:26
>>904
UNIX認証とは違う話をしているようだけど、
「unixの会員になる」というのが何を指すのか説明して。

>>905
彼の妄想世界では可能なんだよ、きっと。
0907名無しさん@お腹いっぱい。2006/08/21(月) 08:35:36
そういや最近のGNU coreutilsはsort, head, tailとかのコマンドが
「-行数」をデフォルトで受け付けたりやめたりとずいぶん揺れてるね。

このへんはPOSIX 1003.2-1992かPOSIX 1003.1-2001かで違うみたいだ。
0908名無しさん@お腹いっぱい。2006/08/21(月) 09:34:22
「UNIX」は、X/Open Company Limitedが独占的にライセンスしている米国ならびに他の国における登録商標です。
0909名無しさん@お腹いっぱい。2006/08/21(月) 15:45:35
>>906
きっと美容院のことだよ。
ご紹介システムを利用すれば、1000円分のポイントもらえるよ。
0910名無しさん@お腹いっぱい。2006/08/21(月) 16:12:59
「unixの会員になる」って、
レンタル・ビデオ屋UNIXの会員になるってことじゃないかな。
0911名無しさん@お腹いっぱい。2006/08/21(月) 16:24:16
>>901
そのexportの解釈でもちょっと苦しいね。

あと、別の例だけど、
$ HOGE=hoge unset hoge
$ echo $HOGE
hoge

↑unsetされてない。
これはどう解釈する?
やっぱバグだろ。
09129112006/08/21(月) 16:35:48
typoしてもうた。↓のとおり

$ HOGE=hoge unset HOGE
$ echo $HOGE
hoge

この現象が起きるのはシェルの種類によるかも。

もちろん、セミコロンを入れて
$ HOGE=hoge; unset HOGE
ならちゃんと unsetされる。

何が言いたいかというと、元の話題の HOGE=hoge; export HOGE の時、
念のためセミコロンを入れろということ。
0913名無しさん@お腹いっぱい。2006/08/21(月) 21:25:46
いやいやいやexportの話でしょ?
その言い方からすると、そのウンコシェルでもexportは効くんでしょ?
0914名無しさん@お腹いっぱい。2006/08/22(火) 13:34:42
>>910
ウチの近くに本当にunixっていうレンタルやがあるぞ。
0915名無しさん@お腹いっぱい。2006/08/22(火) 13:52:53
>>914
もちろん実在することを知っているからこそ書いてる。
0916名無しさん@お腹いっぱい。2006/08/22(火) 20:36:31
タッパ…
0917名無しさん@お腹いっぱい。2006/08/23(水) 00:31:55
Solaris9/10なんですが、教えてください。

標準出力に数値を出力するプログラムがあり、その値を
シェルでexitしたいんですが、マイナス値でエラー"番号が正しくありません"になります。
簡単にいうと、エラーとなるのは↓のようなものです。

#/bin/sh
EXITVALUE=-1
exit ${EXITVALUE}

これ、Linuxではうまくいくんですが、Solarisではだめなんでしょうか?
0918名無しさん@お腹いっぱい。2006/08/23(水) 00:36:29
うまくいく方がおかしいので、おとなしく 0 から 255 までの数を使ってください。
0919名無しさん@お腹いっぱい。2006/08/23(水) 01:12:45
POSIX では 0 〜 255 までだっけ。
0920名無しさん@お腹いっぱい。2006/08/23(水) 07:21:59
>>917
Linuxというより、bashだと exitの値に勝手に mod 256をとった上で
符号なし8bitとみなした 0 〜 255の値になる模様。
なので、Solarisでもbashを使えば無問題。

あるいは、exit `expr \( ${EXITVALUE} + 256 \) % 256` かな。
0921名無しさん@お腹いっぱい。2006/08/23(水) 08:04:38
>>920
ありがとう。
今日環境使えたら試してみます。
0922名無しさん@お腹いっぱい。2006/08/23(水) 08:35:25
受け側で、`` で受ければいいんじゃないの?
0923名無しさん@お腹いっぱい。2006/08/23(水) 09:21:27
bash使ってもエラーにならなくなるだけで、親プロセスがexit statusとしてもらえる値は
そのコマンドが返した値の-1ではなくてmod 256した値の255に変化してしまうのだが、
それでいいのかね?
0924名無しさん@お腹いっぱい。2006/08/23(水) 09:43:03
>>922
`` で受けてる。
実際には、フォーマットが決まってるから、その後awkで切り出して、
それをEXITVALUEに代入しているけど。
で、その値がマイナスだとexitで怒られます。

>>922
呼び出し側は専用のアプリで、singned charとして扱っているから大丈夫だと
思われます。
09259172006/08/24(木) 00:21:43
>>920
今思えば質問も的を得ていないにもかかわらず、望んでいたのは
そういうレスでした。おかげでなんとかしのげました。
ありがとうございます。

他にもレスくれた人達、ありがとう!
0926名無しさん@お腹いっぱい。2006/08/24(木) 00:29:02
× 的を得る
○ 的を射る
○ 当を得る
○ 要を得る
0927名無しさん@お腹いっぱい。2006/08/26(土) 09:38:02
ttp://en.tldp.org/HOWTO/Reading-List-HOWTO/b80.html

Shell (as a programming language for more than trivial scripting) is dead.

シ ェ ル は 死 ん で い る
0928名無しさん@お腹いっぱい。2006/08/26(土) 10:55:13
>>927
ラリーウォールがperlの広告してる、ふう、それだけのこと
0929名無しさん@お腹いっぱい。2006/08/26(土) 17:06:11
それであってさえ、`trivial scripting' にはシェルスクリプトが最適なのを
認めてしまっている罠
0930名無しさん@お腹いっぱい。2006/08/28(月) 10:44:12
1ヶ月後までにやっとかなきゃいけないこと(でもできればその直前くらいがいいこと)を、
自分のメールアドレスにお知らせしてくれるリマインダーを書きたいんだけど、
どっから手を付けていいのやら。
0931名無しさん@お腹いっぱい。2006/08/28(月) 10:50:23
at
0932名無しさん@お腹いっぱい。2006/08/28(月) 20:59:48
アッー!
レス数が900を超えています。1000を超えると表示できなくなるよ。