Go to the first, previous, next, last section, table of contents.


Ãâ·ÂÀ» ÀüȯÇϱâ, ¿ø·¡´ë·Î ³õ±â

Àüȯ(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¿¡¼­ ÈçÇÑ ÇÁ·Î±×·¡¹Ö °ü½ÀÀÌ´Ù.

Ãâ·ÂÀ» ¿ø·¡´ë·Î µÇµ¹·Á ³õ±â (Undivering output)

ÀüȯµÈ ÅؽºÆ®´Â ³»Àå ¸ÅÅ©·Î 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
=>

Àüȯ ¹øÈ£ (Diversion numbers)

³»Àå ¸ÅÅ©·Î divnumÀÌ ÀÖ´Ù.

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.