Àüȯ(Diversion;¸í»ç)Àº Ãâ·ÂÀ» Àӽ÷ΠÀúÀåÇÏ´Â ¹æ¹ýÀÇ ÇϳªÀÌ´Ù.
m4
ÀÇ Ãâ·ÂÀº ¾ðÁ¦µçÁö Àӽà ÆÄÀÏ·Î Àüȯ(divert;µ¿»ç)µÉ ¼ö ÀÖ´Ù. ±×¸®°í
ÀÌ°ÍÀ» ³ªÁß¿¡ Ãâ·Â ½ºÆ®¸²(stream; È帧)À¸·Î ´Ù½Ã ³¢¿ö ³ÖÀ» ¼ö ÀÖ´Ù. (ÀÌ°ÍÀ»
undivert ½ÃŲ´Ù¶ó°í ÇÔ) (¿ªÀÚÁÖ: ¿ø¹®¿¡´Â undivertÀÇ ¼öµ¿ÅÂÀÎ
undiverted¶ó°í µÇ¾î ÀÖ´ø °ÍÀ» undivert ½ÃŲ´Ù¶ó°í ¹ø¿ªÇÏ¿´À½.
ÀÌÈÄÀÇ º»¹®¿¡¼´Â ÁÖ·Î `µÇµ¹¸®´Ù'¶ó°í ¹ø¿ªÇÔ.)
Àüȯ¿¡ ºÙÀÌ´Â ¹øÈ£´Â 0¿¡¼ºÎÅÍ ½ÃÀÛÇÏ¿© Å« °ª ÂÊÀ¸·Î Çì¾Æ¸°´Ù. Àüȯ ¹øÈ£ 0Àº
º¸ÅëÀÇ Ãâ·Â ½ºÆ®¸²ÀÌ´Ù. µ¿½Ã¿¡ Á¸ÀçÇÏ´Â ÀüȯµéÀÇ °¹¼ö´Â ÁÖ·Î ±×°ÍÀ»
Ç¥ÇöÇÏ´Â µ¥ »ç¿ëµÇ´Â ¸Þ¸ð¸®¿¡ ÀÇÇØ Á¦ÇѵȴÙ. ¿Ö³ÄÇϸé GNU m4
´Â ÀüȯÀ»
¸Þ¸ð¸®¿¡ ³Ö¾î µÎ·Á°í Çϱ⠶§¹®ÀÌ´Ù. ±×·¯³ª Àüȯµé ¸ðµÎ°¡ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Â
ÃÑ ¸Þ¸ð¸® ¾ç¿¡´Â Á¦ÇÑÀÌ ÀÖ´Ù(ÇöÀç´Â 512K). ÃÖ´ë°ªÀ» ³Ñ¾î °¡·Á°í ÇÒ ¶§ Âë¿¡´Â
Àӽà ÆÄÀÏÀÌ ¿·Á¼ ÇöÀç ¸Þ¸ð¸®¿¡ ¾ÆÁ÷ ÀÖ´Â Àüȯµé Áß °¡Àå Å« °ÍÀ» ¹Þ°í, ´Ù¸¥
ÀüȯÀÌ ¾²µµ·Ï ÀÌ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù. ±×·¡¼ ÀÌ·Ð »óÀ¸·Î ÀüȯÀÇ °¹¼ö´Â »ç¿ë
°¡´ÉÇÑ ÆÄÀÏ ±â¼úÀÚÀÇ °¹¼ö¿¡ ÀÇÇØ Á¦ÇÑÀÌ µÈ´Ù.
Ãâ·ÂÀº divert
¸¦ »ç¿ëÇÏ¿© ÀüȯµÉ ¼ö ÀÖ´Ù.
divert(opt number)
¿©±â¿¡¼ number´Â ÀüȯÇÏ´Â µ¥ »ç¿ëµÇ´Â ¹øÈ£ÀÌ´Ù. ¸¸ÀÏ number°¡ ¾ø´Ù¸é 0À¸·Î °¡Á¤µÈ´Ù.
divert
´Â È®ÀåµÇÁö ¾Ê´Â´Ù.
m4
ÀÇ ¸ðµç ÀÔ·ÂÀÇ Ã³¸®°¡ ³¡³¯ ¶§, ±× ¶§±îÁö Á¸ÀçÇÏ´Â ¸ðµç ÀüȯµéÀº
ÀÚµ¿ÀûÀ¸·Î ¹øÈ£ ¼ø¼´ë·Î undivertµÈ´Ù.
(¿ªÀÚÁÖ: undivertÀÇ ¶æÀº see section Ãâ·ÂÀ» ÀüȯÇϱâ, ¿ø·¡´ë·Î ³õ±â)
divert(1) This text is diverted. divert => This text is not diverted. =>This text is not diverted. ^D => =>This text is diverted.
°°Àº ÀÎÀÚ¸¦ °¡Áö´Â ¿©·¯ ¹øÀÇ divert
ÀÇ È£ÃâÀº ÀÌÀü¿¡ ÀüȯµÈ
ÅؽºÆ®¸¦ µ¤¾î ½á ¹ö¸®Áö ¾Ê´Â´Ù. ´ÜÁö ±× µÚ¿¡ µ¡ºÙÀÏ »ÓÀÌ´Ù.
¸¸ÀÏ Ãâ·ÂÀÌ Á¸ÀçÇÏÁö ¾Ê´Â ÀüȯÀ¸·Î ÀüȯµÈ ´Ù¸é ±×°ÍÀº ´Ü¼øÈ÷ »ç¶óÁ® ¹ö¸°´Ù. ÀÌ°ÍÀº ¿øÄ¡ ¾Ê´Â Ãâ·ÂÀ» ¾ø¾Ö ¹ö¸®´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¿øÄ¡ ¾Ê´Â Ãâ·ÂÀÇ ÈçÇÑ °æ¿ì´Â ¸ÅÅ©·Î Á¤ÀÇ ¶§¿¡ µÚ¿¡ µû¶óºÙ´Â ÁÙ¹Ù²Þ ¹®ÀÚÀÏ °ÍÀÌ´Ù. ´ÙÀ½¿¡ ±×°ÍÀ» ÇÇÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù.
divert(-1) define(`foo', `Macro `foo'.') define(`bar', `Macro `bar'.') divert =>
ÀÌ°ÍÀº m4
¿¡¼ ÈçÇÑ ÇÁ·Î±×·¡¹Ö °ü½ÀÀÌ´Ù.
ÀüȯµÈ ÅؽºÆ®´Â ³»Àå ¸ÅÅ©·Î undivert
¸¦ »ç¿ëÇÏ¿© ¿ø·¡´ë·Î µ¹·Á ³õÀ»
¼ö ÀÖ´Ù.
undivert(opt number, ...)
ÀÌ°ÍÀº ÀÎÀÚ·Î ÁÖ¾îÁø ÀüȯµéÀ» ÀÎÀÚ·Î ÁÖ¾îÁø ¼ø¼´ë·Î ¿ø·¡´ë·Î µ¹·Á ³õ°Ô µÈ´Ù. ÀÎÀÚ°¡ ¾øÀ» °æ¿ì´Â ¸ðµç ÀüȯµéÀÌ ¹øÈ£ ¼ø¼´ë·Î µÇµ¹·ÁÁø´Ù.
undivert
ÀÇ È®ÀåÀº ¾ø´Ù.
divert(1) This text is diverted. divert => This text is not diverted. =>This text is not diverted. undivert(1) => =>This text is diverted. =>
¸¶Áö¸· µÎ °³ÀÇ ºó ÁÙ¿¡ ÁÖÀÇÇ϶ó. ±× Áß Çϳª´Â undivert
¸¦ µÚµû¶ó¼ ³ª¿Â
°ÍÀÌ°í ´Ù¸¥ °ÍÀº divert
¸¦ µÚµû¶ó¼ ³ªÅ¸³ °ÍÀÌ´Ù!
ÀüȯÀº Á¾Á¾ ÀÌ¿Í °°ÀÌ ºó ÁÙ·Î ½ÃÀ۵ȴÙ.
ÀüȯµÈ ÅؽºÆ®°¡ µÇµ¹·Á Áú ¶§¿¡´Â, ±×°ÍÀº m4
°¡ ´Ù½Ã ÀÐÁö´Â
¾Ê´Â´Ù. ´ÜÁö ÇöÀçÀÇ Ãâ·ÂÀ¸·Î º¹»ç¸¸À» ÇÒ »ÓÀÌ´Ù. ±×·¯¹Ç·Î ´Ù¸¥ ÀüȯÀ¸·Î
µÇµ¹¸®´Â °Í(¿ªÀÚÁÖ: ¿ø¹®Àº to undivert into a diversion ÀÓ)Àº ¿¡·¯°¡ ¾Æ´Ï´Ù.
ÀüȯÀÌ µÇµ¹·Á Áø ÈÄ¿¡´Â, ±× ÀüȯµÈ ÅؽºÆ®´Â »ç¶óÁ® ¹ö¸®¸ç, ÀüȯµÈ ÅؽºÆ®¸¦ ¿©·¯ ¹ø µÇµ¹¸®´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù.
divert(1) This text is diverted first. divert(0)undivert(1)dnl => =>This text is diverted first. undivert(1) => divert(1) This text is also diverted but not appended. divert(0)undivert(1)dnl => =>This text is also diverted but not appended.
ÇöÀçÀÇ ÀüȯÀ» ´Ù½Ã µÇµ¹¸®·Á´Â ½Ãµµ´Â Á¶¿ëÈ÷ ¹«½ÃµÈ´Ù. (¿ªÀÚÁÖ: ÀÌ°ÍÀº ¾î¶² Àüȯ¿¡¼ ÀÚ½ÅÀ» Àڽſ¡°Ô µÇµ¹¸®´Â °ÍÀ» ¸»ÇÏ´Â °Í °°À½.)
GNU m4
´Â À̸§À» ÁöÁ¤ÇÑ ÆÄÀÏÀ» µÇµ¹¸± ¼ö ÀÖ´Ù. ÀÎÀÚ·Î ¼ýÀÚ°¡ ¾Æ´Ñ ÆÄÀÏ
À̸§À» ÁÖ¸é, ÇöÀçÀÇ Ãâ·ÂÀ¸·Î º¹»çµÇ¸ç, Çؼ®µÇÁö ¾Ê´Â´Ù. ÀÌ°ÍÀ» º¸Á¶ÇÏ´Â °ÍÀÌ
¾Õ¿¡¼ À̾߱âÇÑ ³»Àå ¸ÅÅ©·Î include
ÀÌ´Ù. (see section ÆÄÀÏÀ» »ðÀÔÇϱâ) ÀÌ
Â÷ÀÌÁ¡À» ¼³¸íÇϱâ À§Çؼ, ÆÄÀÏ `foo'°¡ ´Ü¾î `bar'¸¦ Æ÷ÇÔÇÏ°í
ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.
define(`bar', `BAR') => undivert(`foo') =>bar => include(`foo') =>BAR =>
divnum
ÀÌ°ÍÀº ÇöÀçÀÇ Àüȯ ¹øÈ£·Î È®ÀåµÈ´Ù.
Initial divnum =>Initial 0 divert(1) Diversion one: divnum divert(2) Diversion two: divnum divert => ^D => =>Diversion one: 1 => =>Diversion two: 2
ÀÎÀÚ°¡ ¾ø´Â ¸¶Áö¸· divert
È£ÃâÀÌ ²À ÇÊ¿äÇÏ´Ù. ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é
Àüȯ¿¡¼ºÎÅÍ µÇµ¹·ÁÁö°Ô µÇ´Â(undiverted) ÅؽºÆ®°¡ ±× ÀÚ½ÅÀ¸·Î ÀüȯµÉ °ÍÀ̱â
¶§¹®ÀÌ´Ù.
Ãâ·ÂÀ» ÀüȯÇÏ´Â ´ç½Ã¿¡´Â Àüȯ½ÃŲ ÅؽºÆ®°¡ Á¤¸»·Î ÇÊ¿äÇÏ°Ô µÉÁö ÇÊ¿ä ¾ø°Ô
µÉÁö¸¦ ¾Ë ¼ö ¾ø´Â °æ¿ì°¡ ¸¹´Ù. ºñ¾î ÀÖÁö ¾ÊÀº ¸ðµç ÀüȯµéÀº ÀÔ·ÂÀÇ ³¡ ´Ü°è¿¡¼
¸ÞÀÎ Ãâ·Â ½ºÆ®¸²À¸·Î µÇµ¹·Á µé¾î °¡±â ¶§¹®¿¡, ÀüȯÀ» ¹ö¸± ¹æ¹ýÀÌ ÇÊ¿äÇÏ´Ù.
¸ðµç ÀüȯµéÀ» ¹ö¸®°í ½Í´Ù¸é, °¡Àå ½¬¿î °ÍÀº ´ÙÀ½¿¡ ³ª¿À´Â °Íó·³,
m4
·ÎÀÇ ÀÔ·ÂÀÇ ¸¶Áö¸·¿¡ `divert(-1)'À» ÇÑ ´ÙÀ½ ¸í½ÃÀûÀ¸·Î
`undivert'¸¦ ÇÏ´Â °ÍÀÌ´Ù.
divert(1) Diversion one: divnum divert(2) Diversion two: divnum divert(-1) undivert ^D
¾Æ¹«·± Ãâ·Âµµ »ý¼ºµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.
ÇØ´çÇÏ´Â Àüȯ¸¸À» ¼±ÅÃÇÏ¿© Áö¿ì´Â °ÍÀº ´ÙÀ½ÀÇ ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ¸é °¡´ÉÇÏ´Ù.
define(`cleardivert', `pushdef(`_num', divnum)divert(-1)undivert($@)divert(_num)popdef(`_num')') =>
ÀÌ°ÍÀº ´ÜÁö undivert
ó·³ È£ÃâµÇÁö¸¸, ±× È¿°ú´Â ÀÎÀÚ·Î ÁÖ¾îÁø ÀüȯÀ»
Áö¿ì´Â °ÍÀÌ´Ù. (ÀÌ ¸ÅÅ©·Î¿¡´Â ´Ù·ç±â ¾î·Á¿î ¹ö±×°¡ Çϳª ÀÖ´Ù! ±×°ÍÀ»
¿©·¯ºÐÀÌ Ã£¾Æ¼ °íÄ¥ ¼ö ÀÖ´ÂÁö ½ÃµµÇØ º¸±â ¹Ù¶õ´Ù.)
Go to the first, previous, next, last section, table of contents.