shell脚本小练习#005:create.sh

# 查找输入文件目录的路径,将查找到的目录拷贝到新创建的目录下

#!/bin/bash

# 定义全局变量
NUM_OF_TEST_CASES=10
BASE_DIR="../"
TEST_DIR="$BASE_DIR/testCases"
TEST_SOURCE_DIR="sourceProject"


# 查找需要执行的源文件
function find_dir() {
    local search_dir=$1
    local current_dir=$PWD
    while [[ $current_dir != "/" ]]; do
        if [[ -d "${current_dir}/${search_dir}" ]]; then
            echo "${current_dir}/${search_dir}"
            return
        fi
        current_dir=$(dirname "$current_dir")
    done
    echo "failed"
    return -1
}

# 创建测试用例执行目录
function create_test_dir() {
    local num=$1
    if [ -d "$TEST_DIR" ]; then
        rm -rf "$TEST_DIR"
    fi
    mkdir "$TEST_DIR"
    for i in $(seq 1 $num); do
        mkdir "$TEST_DIR/case$i"
        # touch "$TEST_DIR/case$i/case_${i}_log.txt"
    done
}

# 复制文件
function CopyTestCases() {
    local CASE_NUM="$1"
    local SOURCE="$2"
    local DEST_DIR="$3"
    if ! [[ -d "$SOURCE" ]]; then
        echo "Error: '$SOURCE' is not a directory."
        exit 1
    fi
    create_test_dir "$CASE_NUM"
    for dir in "$DEST_DIR"/case*; do
        if [[ -d "$dir" ]]; then
            cp -r "$SOURCE" "$dir"
            echo "Copied '$SOURCE' to '$dir'"
        fi
    done
}

# 拷贝测试用例
function move_file_to_test_case() {
    local SEARCH_DIR="$1"
    if [[ -z "$SEARCH_DIR" ]]; then
        echo "Please provide a directory name to search for"
        exit 1
    fi
    local SOURCE=$(find_dir "$SEARCH_DIR")
    if [[ "$SOURCE" == "failed" ]]; then
        echo "Error: Failed to find directory '$SEARCH_DIR'."
    else
        if ! [[ -d "$SOURCE" ]]; then
            echo "Error: '$SOURCE' is not a directory."
            exit 1
        fi
        CopyTestCases $NUM_OF_TEST_CASES "$SOURCE" "$TEST_DIR"
    fi
}

function main()
{
    NUM_OF_TEST_CASES=$1
    move_file_to_test_case $2
}

main $1 "$TEST_SOURCE_DIR" 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值