どのように私は、コマンドラインオプションにディレクトリ内のすべての一致するファイル名を変換するために、いくつかの(bashの)シェルスクリプトを書くのですか?
-
21-08-2019 - |
質問
私の質問への答えはどうやら「私は(というよりもパッケージ)ディレクトリに鼻カバレッジ出力を制限することはできますか?」にはnoですが、私は、ディレクトリ内の各ファイルの.pyのパッケージ名と鼻に--coverage-package=PACKAGE
オプションを渡すことができます。
ですから、例えば、ディレクトリが含まれている場合:
foo.py
bar.py
baz.py
...その後、私はコマンドを使用する必要があります:
nosetests --with-coverage --coverage-package=foo --coverage-package=bar --coverage-package=baz
だから私の質問は、誰かがの.py拡張子を持つ現在のディレクトリ内のすべてのファイル名を取得し、(削除の.py拡張子を持つ)上記のコマンドラインを生成する(好ましくはshまたはbashの)いくつかのシェルスクリプトコードを書くことができています?私はbashのスキルは非常に限られています。 (私はPythonでそれを行うように誘惑しています。)
解決
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