디렉토리의 모든 일치하는 파일 이름을 명령 줄 옵션으로 변환하기 위해 일부 (bash) 쉘 스크립트를 작성하려면 어떻게합니까?
-
21-08-2019 - |
문제
분명히 내 질문에 대한 답 "코 커버리지 출력을 패키지 대신 디렉토리로 제한 할 수 있습니까?" 아니요, 그러나 나는 통과 할 수 있습니다 --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$//'`
제휴하지 않습니다 StackOverflow