Next: , Previous: Shellology, Up: Portable Shell   [Contents][Index]


10.2 ¥Ò¥¢¥É¥­¥å¥á¥ó¥È

\’¤Ï¡¤¼¡¤Î¥·¥ó¥Ü¥ë¤È°ì½ï¤Ë¤Ê¤Ã¤ÆÆÃÊ̤ΰÕÌ£¤ò»ý¤¿¤Ê¤¤¤Î¤Ç¡¤°Ý»ý¤µ¤ì ¤ë‘\’¤Ë°Í¸¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥OpenBSD 2.7¤Î¥Í¥¤¥Æ¥£¥Ö¤Ê /bin/sh¤Ç¤Ï¡¤‘\"’¤Ï‘"’¤ËŸ³«¤µ¤ì¡¤¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤Ç ¤Ï°úÍÑÉä¤Ç°Ï¤Þ¤ì¤Æ¤¤¤Ê¤¤Ê¬Î¥»Ò¤È¤·¤ÆÍѤ¤¤é¤ì¤Þ¤¹¡¥°ìÈÌŪ¤Êµ¬Â§¤È¤·¤Æ¡¤ ‘\\’¤¬‘\’¤ËŸ³«¤µ¤ì¤ë¾ì¹ç¡¤‘\’¤òÆÀ¤ë¤¿¤á¤Ë‘\\’ ¤ò»È ÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥

OpenBSD 2.7¤Î/bin/sh¤Ç¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

$ cat <<EOF
> \" \\
> EOF
" \

¤½¤·¤Æ¡¤Bash¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

bash-2.04$ cat <<EOF
> \" \\
> EOF
\" \

¿¤¯¤Î¸Å¤¤(Bourne¥·¥§¥ë¤ò´Þ¤à)¥·¥§¥ë¤Ç¤Ï¡¤¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤ÏÈó¸úΨ¤Ë¼ÂÁõ ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥Â礭¤Ê¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤ò´Ö°ã¤Ã¤Æ°·¤¦¥·¥§¥ë¤â¤¢¤ê¤Þ¤¹¡¥Î㤨 ¤Ð¡¤Solaris 8 dtksh¤Ïksh M-12/28/93d¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Æ¡¤ ¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤ò1024¥Ð¥¤¥È¤Î¥Ð¥Ã¥Õ¥¡¤Î¶­³¦¤Ç´Ö°ã¤Ã¤¿ÊÑ¿ô¤ÎŸ³«¤òÀ¸¤¸¤Þ ¤¹¡¥¥æ¡¼¥¶¤Ï°ìÈÌŪ¤Ë¡¤¤è¤ê®¤¯¤è¤ê¿®ÍêÀ­¤Î¹â¤¤¥·¥§¥ë¤ò»ÈÍѤ·¤Æ¡¤¤³¤ì¤é¤Î ÌäÂê¤ò½¤Àµ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¡¤Î㤨¤Ð¡¤¤½¤Î¤Þ¤Þ‘./configure’¤¹¤ë¤Î¤Ç¤Ï ¤Ê¤¯¡¤¥³¥Þ¥ó¥É‘bash ./configure’¤ò»ÈÍѤ·¤Þ¤¹¡¥

¥·¥§¥ë¤Ë¤è¤Ã¤Æ¤Ï¡¤Ã±°ì¤Îʸ¤ÎÃæ¤Ë¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤¬Â¿²á¤®¤ë¤È¤­¡¤Èó¾ï¤ËÈó ¸úΨ¤Ë¤Ê¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥Î㤨¤Ð¡¤configure.ac¤Ë°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î ´Þ¤á¤¿¤È¤·¤Þ¤¹¡¥

if <cross_compiling>; then
  assume this and that
else
  check this
  check that
  check something else
  …
  on and on forever
  …
fi

¥·¥§¥ë¤Ï¡¤¤½¤ÎÃæ¤Î¤½¤ì¤¾¤ì¤Î¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤ËÂФ·¤Æ°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤· ¤Ê¤¬¤é¡¤if/fi¤Îʸ̮Á´ÂΤò¥Ñ¡¼¥¹¤·¤Þ¤¹¡¥fork¤´¤È¤Ë¤½ ¤Î¤è¤¦¤Ê¥Ò¥¢¥É¥­¥å¥á¥ó¥È¤ËÂФ·¤Æ¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¥·¥§¥ë¤â¤¢¤ê¡¤¥¤¥ó¥¹¥È¡¼ ¥ë¤µ¤ì¤¿¸å¤Î¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥³¡¼¥É¤ÇÀµ¤·¤¯ºï½ü¤µ¤ì¤Þ¤¹¡¥¤½¤ì¤Ï¡¤¥·¥§¥ë¤¬±Ê µ×¤Ë¼õ¤±Æþ¤ì¤é¤ì¤ë¥ê¥ó¥¯¤òºîÀ®¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¡¥

if/fi¤Î³°Éô¤Î¥Æ¥¹¥È¤ò°Üư¤·¤¿¤ê¡¤Ê£¿ô¤Îif/fi ¤Îʸ̮¤òºîÀ®¤·¤¿¤ê¤¹¤ë¤³¤È¤Ç¡¤¤«¤Ê¤êưºî¤¬²þÁ±¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡¥¤È¤Ë¤«¤¯¡¤ ¤³¤¦¤¤¤Ã¤¿¹½À®¤Ï¡¤Åµ·¿Åª¤ÊAutoconf¤Î»ÈÍѤǤÏÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡¥¼ÂºÝ¡¤M4¥Þ ¥¯¥í¤Ï¡¤¥·¥§¥ë¤Î¾ò·ïʸ¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤Î¤Ç¡¤¤½¤ì¤Ï¿ä¾©¤µ¤ì¤Æ¤ª¤é¤º¡¤ ¾ò·ïʬ´ô¤ÎÁ°¤Ë¤½¤ì¤¬Å¸³«¤µ¤ì¡¤¼Â¹Ô»þ¤Ë¾ò·ïʸ¤¬¼ºÇÔ¤À¤Èʬ¤«¤ë¤È¤­¡¤¥Þ¥¯¥í Ÿ³«¤Ë¼ºÇÔ¤¹¤ë¤«¤â¤·¤ì¤º¡¤¥Þ¥¯¥í¤Î¼Â¹Ô¤ò´°Á´¤Ë½ªÎ»¤Ç¤­¤Ê¤¤¤Ç¤·¤ç¤¦¡¥