如何在循环中以某种顺序调用文件

时间:2018-05-18 10:24:39

标签: shell

我正在研究一个shell脚本,它应该以某种定义的顺序运行python测试。这是shell脚本:

files_array=()
for entry in tests/*.py
do
    files_array+=($entry)
    echo $files_array
done

cd tests/
./script -p create_01.yml
export FILE_PATH='../books/create_01.yml'
python3 -m unittest test test_create_01.py

./script -p update_02.yml
export FILE_PATH='../books/update_02.yml'
python3 -m unittest test test_update_02.py

./script -p delete_03.yml
export FILE_PATH='../books/delete_03.yml'
python3 -m unittest test test_delete_03.py

tests”文件夹包含3个测试文件:test_create_01.pytest_update_02.pytest_delete_03.py

我将三个文件名放在变量数组files_array中。如何使用此数组调用一个块中的所有三个文件而不是3个? 我还想按照某种顺序给他们打电话:首先拨打test_create_01.py,然后拨打test_update_02.py,然后拨打最后test_delete_03.py

1 个答案:

答案 0 :(得分:1)

您甚至不需要创建阵列。你可以这样做:

cd tests/

for entry in test_create_01.py test_update_02.py test_delete_03.py; do
    echo "now processing $entry"
    s="${entry#test_}"
    s="${s%.py}"
    ./script -p "$s.yml"
   export FILE_PATH="../books/$s.yml"
  python3 -m unittest test "entry"
done