디렉토리의 모든 일치하는 파일 이름을 명령 줄 옵션으로 변환하기 위해 일부 (bash) 쉘 스크립트를 작성하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/855265

문제

분명히 내 질문에 대한 답 "코 커버리지 출력을 패키지 대신 디렉토리로 제한 할 수 있습니까?" 아니요, 그러나 나는 통과 할 수 있습니다 --coverage-package=PACKAGE 디렉토리의 각 .py 파일의 패키지 이름으로 코 옵션.

예를 들어 디렉토리에 포함 된 경우 :

foo.py
bar.py
baz.py

... 그런 다음 명령을 사용해야합니다.

nosetests --with-coverage --coverage-package=foo --coverage-package=bar --coverage-package=baz

따라서 내 질문은 누군가가 .py 확장자가있는 현재 디렉토리의 모든 파일 이름을 가져 와서 위 명령 줄을 생성하기 위해 일부 쉘 스크립트 코드 (바람직하게는 sh 또는 bash)를 작성할 수 있습니까? 내 배쉬 기술은 상당히 제한적입니다. (나는 파이썬에서 그냥하고 싶어합니다.)

도움이 되었습니까?

해결책

nosetests --with-coverage $(for f in *.py; do echo --cover-package="${f%.*}"; done)

여기에 트릭이 사용 중입니다 매개 변수 대체 파일 확장자를 제거합니다.

${f%.*}

다른 팁

그리고 당신이 그것을 정확하게하려면 (즉, wordsplitting이 당신의 파일 이름을 절단하거나 예기치 않은 글로브를 랜덤 파일 이름으로 확장하도록 허용하지 마십시오) 배열을 사용하십시오.

files=(*.py)
packages=("${files[@]/%.py/}")
nosetests --with-coverage "${packages[@]/#/--coverage-package=}"
nosetests --with-coverage `ls *.py|sed -e 's/^/--cover-package=' -e 's/\.py$//'`
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top