pdksh vs wine
Radoslaw Zielinski
radek w karnet.pl
Śro, 19 Lut 2003, 23:48:11 CET
Jakub Bogusz <qboosh w pld.org.pl> [19-02-2003 20:09]:
[...]
> cat >>conftest.$ac_ext <<_ACEOF
> /* end confdefs.h. */
> void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
[...]
> Wg SUSv2 raczej to ksh robi źle, choć nie jest to napisane tak
> jednoznacznie... ("will not be treated specially" - ale w jakim kontekście?
> gdyby nie wyrażenie "having a special meaning" w drugim fragmencie,
> bliższy byłbym uznania, że to ksh jest OK).
Z tego, co widzę, to działa +-tak, jak w Perlu. Jeśli ,,word'', czyli
_ACE0F w tym przypadku jest ujęty w pojedyńcze cudzysłowy ('), to
zawartość HERE_DOC nie jest interpolowana (tzn. nie są rozwiązywane np.
zmienne). Tak, jakby ciąg znaków do kończącego delimitera był ujęty w
takie cudzysłowy (bez stosowania konstrukcji HERE_DOC). Natomiast
domyślnie zakłada się ", czyli interpolację.
Przykłady:
$ cat test.sh
cat <<'_ACEOF'
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
_ACEOF
cat <<_ACEOF
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
_ACEOF
cat <<"_ACEOF"
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
_ACEOF
$ ksh test.sh
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
void ac_asm(void) { asm(".data\n\t.string "test"\n\t.text"); }
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
$ cat test.pl
print <<'_ACEOF';
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
_ACEOF
print <<_ACEOF;
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
_ACEOF
print <<"_ACEOF";
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
_ACEOF
$ perl test.pl
void ac_asm(void) { asm(".data\n\t.string \"test\"\n\t.text"); }
void ac_asm(void) { asm(".data
.string "test"
.text"); }
void ac_asm(void) { asm(".data
.string "test"
.text"); }
Jak dla mnie, ksh jest w tym wypadku OK (przynajmniej tak rozumiem
tekst, który zacytowałeś). Wniosek: wystarczy ujęcie _ACEOF w '.
--
Radosław Zieliński <radek w karnet.pl>
[ GPG key: http://radek.karnet.pl/ ]
-------------- następna część ---------
Załącznik, który nie był tekstem został usunięty...
Name: nie znany
Type: application/pgp-signature
Size: 189 bytes
Desc: nie znany
Url : /mailman/pipermail/pld-devel-pl/attachments/20040626/7cc9aa33/attachment.bin
Więcej informacji o liście dyskusyjnej pld-devel-pl