2014-11-04 2 views
0

아래의 파일 명령 줄을 이해할 수 없습니다. "[! -f"는 무엇을 의미합니까?make 파일에서 "! -f"는 무엇을 의미합니까?

[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] || \ 
    cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/ 
+1

Makefile의 명령은 쉘 명령이며, make가 사용하지 않는 경우 (드문 예외 임)입니다. 일반적인 시스템에서 (그리고 bash를 사용하는 것을 의미한다.)'help '를 실행하면'test' 명령과 같고,'help test'는 더 많은 정보를 찾을 수있다. . – hvd

+0

덕분에, 어떻게 든 나는 그것과 관련이있을 거라 생각했다. –

+0

[명령은 도움에 따라 조건을 평가한다.이 라인은 여전히 ​​의미가 없다. 파일이 없거나 blabla에 파일을 복사 할 수 있습니까? 귀하의 설명 답변을 주셔서 감사합니다 –

답변

1

이미

[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] 

테스트 파일이 존재하지 않는 것을 문서에서 알아 냈어요, 당신은 이미 알고

cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/ 

사본 파일. 따라서 [ ! -f ... ] || cp ...은 파일이있는 경우에만 파일을 복사합니다. "파일이 없거나 파일이 복사됩니다"로 읽을 수 있습니다.

보통은 파일이 존재하지 않는 경우,이 0이 아닌 상태 코드로 종료 것입니다, 그러나

[ -f ... ] && cp ... 

로 작성할 수 있습니다 상태 코드는 파일이 존재하는 경우에만 제로 것이었다 성공적으로 복사되었습니다. 여기서 목표는 파일의 존재하지 않는 것을 오류 조건으로 간주하지 않으므로 논리를 반전시켜야합니다.

+0

:) –

관련 문제