[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00140] Re: ${} について
- Subject: [FDclone-users:00140] Re: ${} について
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Fri, 11 Apr 2003 20:42:18 +0900
しらいです。
In Message-Id <y7d1y09vboj.wl@tomokuni.my.email.ne.jp>
Tetsuo Tomokuni <tomokuni@my.email.ne.jp>さんwrites:
> 友國です。
> 仕事でいろいろやっていて気がついたのですが、
> ${} の処理が以下のようになっています。
この辺りは POSIX でも明確な規定が無く、Bourne shell の中で
も version によって微妙に挙動が異なったりするので、可能な限
りは Bourne shell の挙動に近付けていますが、最終的には自分の
使い易い挙動に落ち着けてしまっています。
> fdsh-2.00a$ eval echo "\"\${hoge:-hoge \\\${fuga}\\\${piyo}hoge_fuga_piyo}\""
> hoge ${fuga}${piyo}hoge_fuga_piyo
>
> fdsh-2.03$ eval echo "\"\${hoge:-hoge \\\${fuga}\\\${piyo}hoge_fuga_piyo}\""
> hoge \\\\hoge_fuga_piyo
> fdsh-2.00a$ eval echo "\"\${hoge:-hoge \\\${fuga\}\\\${piyo\}hoge_fuga_piyo}\""
> hoge ${fuga\}${piyo\}hoge_fuga_piyo
>
> fdsh-2.03$ eval echo "\"\${hoge:-hoge \\\${fuga\}\\\${piyo\}hoge_fuga_piyo}\""
> "${hoge:-hoge \\${fuga\}\\${piyo\}hoge_fuga_piyo}": bad substitution
この辺りの差異は下記 patch で 2.00a の側に落ち着くと思いま
す。
---- Cut Here ----
diff -u FD-2.03/pathname.h ./pathname.h
--- FD-2.03/pathname.h Wed Mar 26 00:00:00 2003
+++ ./pathname.h Fri Apr 11 20:12:40 2003
@@ -13,7 +13,7 @@
#define PATHDELIM ':'
#define PMETA META
#define METACHAR "\t\n !\"#$&'()*;<=>?[\\]`|"
-#define DQ_METACHAR "\"$`"
+#define DQ_METACHAR "\"$\\`"
#else /* MSDOS */
# ifdef _NOORIGSHELL
# define FAKEMETA
@@ -24,7 +24,7 @@
# else
# define PMETA '%'
# define METACHAR "\t\n !\"#$%&'()*;<=>?[]`|"
-# define DQ_METACHAR "\"$`"
+# define DQ_METACHAR "\"$%`"
# define PATHDELIM ':'
# endif
#endif /* MSDOS */
---- Cut Here ----
これを直すことで、また別のところで仕様変更になってしまう箇
所が出てしまいますが、弊害の度合を考えるとこの patch を適用
した方がいいかも知れません。
この変更は 2.01c -> 2.02 の時に行なったもので、それで 2.00
と 2.03 とで挙動が異なる訳ですが、次の relase で元に戻してお
きますね。
> 上記の結果を得ましたが、 FD-sh の Bug なのかどうか、
> よく分かっておりません。;-)
何をして bug と呼ぶかでしょうね。Bourne shell 互換を謳って
いるので、Bourne shell と異なる挙動は全て bug と見なしても構
いはしないのですが、流石に 100% の互換性は実装出来そうにあり
ません。
しらい たかし