bash 스크립트를 실행하고 실제로 명령을 실행하지 않고 결과 명령을 확인하는 일반적인 방법이 있습니까? 즉, "드라이 런"/에뮬레이터 등이 있습니까?
실행하고 싶은 데이터베이스 설치 스크립트가 있는데(실제로는 ./configure 및 make를 실행한 후 "make install") 원하지 않는 모든 종류의 항목을 설치하고 있습니다.
그래서 실제로 실행하기 전에 정확히 무엇을 할지 알 수 있는 방법을 원합니다. 어쩌면 명령을 수동으로 실행할 수도 있습니다.
이러한 작업(또는 관련/유사한 작업)을 수행할 수 있는 유틸리티가 있습니까?
답변1
GNU make에는 옵션이 있습니다테스트 실행을 수행합니다.
'-N'
'--그냥 인쇄하세요'
'--시험 실행'
'--정찰'
"작업 금지". make가 대상을 업데이트하는 데 필요한 레시피를 인쇄하지만 실제로 실행하지는 않습니다. 일부 레시피는 이 플래그를 사용해도 계속 실행됩니다(MAKE 변수 작동 방식 참조). 또한 포함된 makefile을 업데이트하는 데 필요한 모든 레시피는 계속 실행됩니다.
따라서 귀하의 경우 실행하여 make -n install
어떤 명령이 실행되는지 확인하십시오 make
.
답변2
모든 버전make
옵션 이 있습니다 -n
(참조POSIX 설명make
),하지만껍데기해당 옵션이 없습니다(예:명령을 실행하지 않고 표시).
더 나쁜 것은, automake를 사용하게 되면 "make -n"을 사용하고 어떤 일이 일어나는지 확인하는 모든 사람의 능력을 손상시키는 수많은 상용구 스크립트(개발자는 이를 "재귀 규칙"이라고 함)에 갇혀 있다는 것입니다. 발생하다.
추가 자료:
-
make -n
실제로 수행하지 않고도 수행할 수 있는 작업을 보여 주는 데 도움이 될 수 있습니다. 그러나 이 명령은‘+’
접두사가 붙은 명령을 계속 실행하며, GNU make를 사용할 때‘$(MAKE)’
문자열을 포함하는 명령 또는‘${MAKE}’
(참조실행하는 대신GNU Make 매뉴얼에서). 종종 이는 재귀 규칙이 수행하는 작업을 보여 주는 데 도움이 되지만, 이는 자신의 규칙에서이렇게 재귀를 혼합하면 안 됩니다.모든 파일을 변경하는 작업이 있습니다. 또한 -n을 사용하더라도 GNU make는 Makefile 자체의 전제 조건을 업데이트합니다(참조메이크파일 리메이크GNU Make 매뉴얼에서). Re: automake에 의해 생성된 규칙의 "make -n"에 더 많은 문제가 있습니다.
나열된 함정 중 일부에 부딪칩니다.27.9 대량의 출력을 생성하는 도구 처리