명령 대체 결과가 비어 있으면 명령을 실행하지 마십시오.

명령 대체 결과가 비어 있으면 명령을 실행하지 마십시오.

명령 대체를 통해 제공되는 pylintGit 저장소의 파일 확장자를 가진 모든 파일에서 실행되는 다음 코드가 있습니다 ..py

pylint $(git ls-files '*.py')

패턴과 일치하는 파일이 없으면 스크립트는 정상적으로 실행됩니다. 그러나 pylint파일 없이 유틸리티를 호출하면 유틸리티에서 자세한 도움말 메시지를 표시하는데 이는 내가 원하는 것이 아닙니다 pylint. 전혀 호출하고 싶지 않습니다.

그러면 파일을 호출하기 전에 파일 이름 패턴과 일치하는 파일이 있는지 테스트하는 가장 좋은 방법에 대한 도움을 받을 수 있습니까 pylint?

나는 pylint초보자 입니다 bash.

답변1

명령 대체를 전혀 사용하지 마십시오. 대신 데이터를 로 파이프 git ls-files하고 결과 파일 목록에서 실행하십시오.xargsxargspylint

git ls-files -z '*.py' | xargs -0 -r pylint

git그러면 명령의 파일 목록이 구분된 목록 xargs으로 전달됩니다 \0. 유틸리티 xargspylint에서 읽은 이름을 사용하여 실행되지만 git, 사용 시 -r목록이 비어 있으면 유틸리티가 실행되지 않습니다.

이는 세 가지 문제를 해결합니다.

  1. \0경로 이름을 --구분된 목록 으로 전달하여 이름에 개행 및 기타 공백이 포함된 파일을 지원합니다.
  2. pylint파이프에서 가능한 가장 큰 파일 배치를 읽고 실행함으로써 git ls-files대량의 데이터가 생성되고 "인수 목록이 너무 김"으로 인해 명령 대체 사용이 실패하는 상황을 처리할 수 있습니다.
  3. pylint목록이 비어 있으면 실행되지 않습니다.

이 답변에서는 xargs비표준(그러나 일반적인) 옵션 sum 을 사용하는 -0구현을 가정합니다 -r.

관련 정보