Path: sramha!katsu From: katsu@sra.co.jp (WATANABE Katsuhiro) Message-ID: Date: 7 May 90 17:47:31 Organization: Software Research Associates, Inc.,Japan In-reply-to: utashiro@sra.junet's message of 7 May 90 03:25:44 GMT Newsgroups: local.unix Subject: Re: test command Distribution: local References: # 長谷井さんも、仕様の違いを吸収するような書き方をしようとおっしゃって # いましたが、どこかで聞いた話では test を使う際には素直に使わずに、 # # test $switch = "-n" -> test "X$switch" = "X-n" # # test $number -eq "999" -> test "0$number" -eq "999" # # などの書き換えをする注意が必要だそうです。 # # sh に慣れている人には常識だそうですが、 # 私の他にも知らなかった人がいるといけないので書いておきます。 記事 で、 utashiro@sra.junet (Kazumasa Utashiro) さんいはく、 > Sun の test を使って、"=" というファイルが存在するか > どうかを調べるにはどうしたらよいのでしょう? これは、-f と = が競合するのをどうすればよいか?ということですよね? もしそうならば、 test -f "./=" とやれば、調べることが可能です。 ただしこれは単に可能であるという話で、あまり美しい答えではないですね。 なぜならば、上のやり方にならうとすると、例えば変数 $filename で示される ファイルの存在を調べる時には、$filename が不幸にも = であった場合を考えて、 test -f "./$filename" とすることになります。しかしこれだと $filename が /tmp/x のように絶対パスで表現されていたら動かないから、 if [ "X$filename" = "X=" -o "X$filename" = "X!=" ] then test -f "./$filename" else test -f "$filename" fi なんてことをしなければならないことになります。 だから、我ながら納得していません X-< 。 -- ----____----____ 渡邊克宏 環境開発部 今月の標語:「生意気も意気のうち」