使用bash for循环从位于子目录

时间:2017-03-10 06:18:04

标签: python bash shell for-loop doctest

我正在测试大量学生的python项目。我在一个单独的文件中创建了一个doctest,比如说mydoctest.rst

doctest的第一行导入学生项目的模块:

  

来自project3 import functionname

当我从与学生项目相同的目录中调用doctest时,doctest工作正常:

studentA$ python3 -m doctest mydoctest.rst

我想做的是使用bash for loop命令为每个子目录执行上述操作,因此我尝试执行以下操作。

parentdirectory$ for d in *; do python3 -m doctest "$d/"mydoctest.rst; done

但是它会尝试在当前目录中而不是在每个子目录中查找模块。

有没有办法在执行do python3 -m doctest之前首先进入每个子目录?

我目前的解决方法(我不满意)是:     为d in *;做cd“$ d”; python3 -m doctest mydoctest.rst; cd ..;完成

2 个答案:

答案 0 :(得分:2)

我建议使用子shell (...)cd

for d in *; do (cd "$d" && python3 -m doctest mydoctest.rst); done

答案 1 :(得分:1)

这应该有效

for d in *; do (cd "$d" ; python3 -m doctest mydoctest.rst); done