2012-04-20 2 views
0

나는 메이크 파일을 만들고있어 현재 디렉토리에 README 파일이 있는지 확인하는 의존성이없는 대상에서 작업하고 있습니다. less 또는 else quitely을 사용한다 : 어떤 에러도주지 않는다. - 타겟을 실행하는 명령은 콘솔에 아무 것도 출력하지 않아야한다.Word가 예기치 않은 (예상 ")") Makefile과 함께

read : 
    ifneq ("$(wildcard README)","") 
     [email protected]$(PAGER) README 
    endif 

또한이 코드와

read : 
    [email protected] file in *;\ 
    do \ 
     if [ ${file} == "README" ]; then\ 
      $(PAGER) "README" ;\ 
     fi;\ 
    done 

와 (PAGER 단순히 이하에 해당하는 VAR입니다)

나는 몇 가지 방법을 시도했지만 아무것도 정말 일 것 같다 첫 번째 청크 나는/bin/sh와 비슷한 오류가 계속 발생한다. 구문 오류 : 예기치 않은 단어 (예기치 "") ")와 나 인생에서 나는 그것이 무엇을 말하는지 알지 못한다. 확실히 구문 오류가 있다고 생각하지 않습니다. 아마도 make를 오용하고 있습니다.

후자의 코드에서 ==에 대한 예상치 못한 연산자 오류가 발생합니다.

나는 이러한 두 개의 단일 라이너 솔루션 등의 간단한 일을 시도했지만 비슷한 에러가 발생했습니다

-[email protected] -a README && less README 
[email protected][ -a README ] && less README 

어떤 도움을 주시면 감사하겠습니다.

EDIT : 나는 더 파고 있었고, 유망한 것을 보았고/bin/bash (SHELL : =/bin/bash)에 내 껍질을 명시 적으로 설정했지만 주사위는 사용하지 않았다.

+0

@ Luboš Turek 태그를 제거하기 전에 위키에서 어떻게 사용되는지 확인해야합니다. 현재 UNIX 명령으로'less'를 사용하는 것에 대해 언급하고 있습니다. http://stackoverflow.com/tags/less/info – fedorqui

답변

1
read: 
     @if [ -e README ]; then less README; fi 
+0

이렇게하면 해결됩니다. 나는 내가 한 일이 왜 이슈를 던지고 있는지 궁금해. 그것은 기능적으로 나처럼 보이지만, == 연산자는 분명히 비슷하게 소화되지 않습니다. – Wuzseen

+0

'[''그냥'명령'명령입니다. 그리고'test'는 '=='이 아닌'= '연산자를 사용하여 동치 비교를합니다. –

+0

@Wuzseen, 첫 번째 해결책은 오류없이 나를 위해 작동하지만 README가 없으면 대상을 위해 수행 할 작업이 없다고 말합니다 (해결 방법이 있습니다). 두 번째 해결책은 '$'('$'=>'$$')를 두 번 사용하면 작동하지 않습니다. 그렇지 않으면 Make가'$ {'을 아무 것도 해석하지 못하게되어 버리기 때문입니다. 세 번째와 네 번째는 작동하지 않으므로 안됩니다. – Beta

1

쉘 코드를 메이크 파일의 명령으로 지정할 수 있도록 별도의 * .sh 파일로 추출해야합니다 (* .sh 파일이 실행 가능한지 확인하십시오).

+0

을 참조하십시오. 나는 그것을 줄 것이다. – Wuzseen

+0

베타는 메이크 파일 내에서 해결하기 위해 나에게 답을 주었지만 꽤 창의적이다. 그러나 과제에 대한 규칙에 위배 될 수 있습니다. – Wuzseen