どのように私は、コマンドラインオプションにディレクトリ内のすべての一致するファイル名を変換するために、いくつかの(bashの)シェルスクリプトを書くのですか?

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

質問

私の質問への答えはどうやら「私は(というよりもパッケージ)ディレクトリに鼻カバレッジ出力を制限することはできますか?」には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$//'`
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top