[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
m4
내부에서 유닉스 명령어를 실행하는 약간의 내장 매크로가
준비되어 있다.
12.1 간단한 명령을 실행하기 | ||
12.2 명령의 출력으로 부터 읽기 | ||
12.3 종료 코드 | ||
12.4 임시파일의 이름 만들기 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
어떠한 셀 명령어든지 syscmd
를 사용하여 실행할 수 있다.
syscmd(shell-command) |
이것은 쉘명령어로 shell-command를 실행한다.
syscmd
는 확장되지 않으며 shell-command로부터
출력되지 않는다. shell-command로부터의 출력이나 에러메시지는
m4
에 의해 읽히지 않는다. 명 령어의 출력을 처리하고 싶다면
See section 명령의 출력으로 부터 읽기.
명령어를 실행 할 때 중요한 점은 m4
는 자신의 출력버퍼를
청소해버린다는 것이다. shell-command의 표준입력, 표준출력,
에러출력은 m4
의 그것과 동일하 다.
내장 매크로 syscmd
는 인자가 있어야만 인식된다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
유닉스 명령어를 실행하고 난 결과로서의 출력으로 부터 m4
가 읽어들이기를
바란다면 esyscmd
를 사용하면 된다.
esyscmd(shell-command) |
이것은 쉘명령어 shell-command의 표준출력으로 확장한다.
명령어를 실행할 때 주의할 점은 m4
는 자신의 출력 버퍼를 청소해
버린다는 것이다. 기본적으로 shell-command의 표준입력과 에러
출력은 m4의 그것과 동 일하다. shell-command의 에러 출력은
확장되는 일부분이 아니다. 그것은 m4의 에러출력으로 나타난다.
여러분들이 현재 있는 디렉토리가 GNU m4 배포본의 ‘checks’ 디렉토리라고 가정하자. 그러면..
define(`vice', `esyscmd(grep Vice ../COPYING)') ⇒ vice ⇒ Ty Coon, President of Vice ⇒ |
esyscmd
의 확장에서 뉴라인문자가 지겹게 따라온다는 것을 기억하자.
내장 매크로 esyscmd
는 인자가 있을 경우에만 인식된다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
쉘 명령어가 제대로 실행되었는 지를 알려면 sysval
을 사용하면 된다.
sysval |
이것은 syscmd
와 esyscmd
를 사용한 마지막 쉘 명령어의 실행의
종료코드로 확장된다.
syscmd(`false') ⇒ ifelse(sysval, 0, zero, non-zero) ⇒non-zero syscmd(`true') ⇒ sysval ⇒0 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
syscmd
와 esyscmd
에서 명시된 명령을 실행할 때 출력을
처리하기 위해서나 어떤 다른 목적 때문에 임시파일이 필요할 지도 모른다.
내장 매크로 maketemp
는 임시적으로 사용할 파일의 이름을 만든다.
maketemp(template) |
이것은 문자열 template를 근간으로 해서 존재하지 않는 파일의
이름으로 확 장된다. 문자열의 끝부분은 ‘XXXXXX’로 되어야 한다. 이
여섯 개의 X
는 보통 m4
프로세스의 프로세스 아이디를
포함하는 어떤 것으로 대치되어 파일이름의 유일성을 보장한다.
maketemp(`/tmp/fooXXXXXX') ⇒/tmp/fooa07346 maketemp(`/tmp/fooXXXXXX') ⇒/tmp/fooa07346 |
이 예에서와 같이 maketemp
를 여러번 호출하는 것은 같은 문자열로
확장된 다. 파일이 다음번 호출때까지 만들어지지 않았다면 두 번째
매크로의 호출은 같은 이름으로 확장될 것이다.
내장 매크로 maketemp
d 는 인자가 있을 때에만 인식된다.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Autobuild on July 17, 2016 using texi2html 1.82.