كيف أكتب بعض (باش) شيل لتحويل جميع أسماء مطابقة في دليل لقيادة خط خيارات؟

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

ولذا سؤالي هو، يمكن للشخص إرسال بعض التعليمات البرمجية شيل (ويفضل SH أو باش) اتخاذ جميع أسماء الملفات في الدليل الحالي مع ملحق .py وتوليد سطر الأوامر أعلاه (مع الملحقات .py إزالة) ؟ مهاراتي باش محدودة للغاية. (أنا يميل إلى مجرد القيام بذلك في بيثون).

هل كانت مفيدة؟

المحلول

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

والخدعة هنا هو استخدام استبدال المعلمة ل إزالة ملحق الملف.

${f%.*}

نصائح أخرى

وإذا كنت تهتم لتحقيق ذلك صحيح (وهو ما يعني، لا تسمح wordsplitting لخفض أسماء الخاص بك بعيدا أو غير متوقع globbing للتوسع في أسماء عشوائي)، استخدام صفيف:

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