佐野@浜松です。 In <200104280156.f3S1u2T00698 _at_ vega.ict.ne.jp>, on "Sat, 28 Apr 2001 10:56:05 +0900', with "Re: shのスクリプトのトラブル", cbtown <cbtown _at_ ict.ne.jp> さん wrote: > > >> 40行目のエラーは、ダブルクオーテーションが対になっていないというエラー > > >> だと解釈していますが、当該の部分では、きちんとついになっております。 > > >> > > >> if [ find_new_file == "" ] #original function > > > > その直前の > > > > || #### back up 作業 #### > > || if [ -f "$ARV_FILE.tar.gz" ] || [ -f "$ARV_FILE.afz ] > > > > で後半の [] 内で double quotation mark が一つ欠けてますね。 > > このせいで次の quotation mark でひっかかってしまってるわけです。 > #でも何で、それ以降の行でえらーになるんだろう…。 ちゃんと「このせいで」って書いてありますよ ? 「後半の [] 内で double quotation mark が一つ欠けて」いるというのは 人間が想像力を働かせて作成者の意図を推理したからわかることであって 機械的に文法チェックした場合には " と " の間に改行や [ やその他の 記号が含まれていても全然問題ありませんから。 例えば $ cat test.sh #!/bin/sh echo "test this is test if [ -f test.sh ] then echo "aruyo!" else echo "naiyo!" fi " exit 0 こんなの作って試してみたら、 echo "test の行から最後から ひとつ前の " の行までの間がすべて何のエラーも無く表示されます。 特に意味の無いコードですが、文法的には間違ってはいませんから。 ここで最後の " だけの行を削除すると、同様に「" が足りないよ」と いうエラーになります。(さらに最後の exit 0 の後に " を追加すると exit 0 まで一緒に表示されるようになります。) 間違いが見つかって初めてエラーとして検出されるので、文法的に 正しい範囲内ではエラーになりません (逆に正しいはずのコードを 勝手な推理でエラーにされたらそっちのほうが問題でしょ ? わざと おかしなことをさせようという場合もあるかもしれないし :) -- # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。) <kgh12351 _at_ nifty.ne.jp> : Taketoshi Sano (佐野 武俊)
References:
- [linux-users:83032] shのスクリプトのトラブルcbtown
- [linux-users:83033] Re: shのスクリプトのトラブルTakeshi Kusune / 楠根雄志
- [linux-users:83035] Re: shのスクリプトのトラブルcbtown
- Prev by Subject: [linux-users:83055] gzip による圧縮について
- Next by Subject: [linux-users:83057] Re: gzipによる圧縮について
- Previous by thread: [linux-users:83035] Re: shのスクリプトのトラブル
- Next by thread: [linux-users:83049] proftpdでドットファイルが見えてしまう。
- Indexes:[Main][Thread]