MST
星途 面试题库

面试题:Bash函数与进程管理结合实现复杂任务调度

假设你有一系列任务,这些任务由不同的Bash函数表示。要求编写一个主函数来调度这些任务,实现如下功能:任务1和任务2并行执行,任务3需要在任务1和任务2都完成后执行,任务4要在任务3完成后开始执行。同时,要处理任务执行过程中的错误,若某个任务失败,整个调度过程应停止并输出错误信息。请给出完整的Bash脚本实现,包括所有函数定义及调度逻辑。
21.5万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 定义任务1函数
task1() {
    echo "开始执行任务1"
    # 模拟任务1执行,这里可以替换为实际任务
    sleep 2
    echo "任务1执行完成"
    return 0
}

# 定义任务2函数
task2() {
    echo "开始执行任务2"
    # 模拟任务2执行,这里可以替换为实际任务
    sleep 3
    echo "任务2执行完成"
    return 0
}

# 定义任务3函数
task3() {
    echo "开始执行任务3"
    # 模拟任务3执行,这里可以替换为实际任务
    sleep 1
    echo "任务3执行完成"
    return 0
}

# 定义任务4函数
task4() {
    echo "开始执行任务4"
    # 模拟任务4执行,这里可以替换为实际任务
    sleep 1
    echo "任务4执行完成"
    return 0
}

# 主调度函数
main() {
    # 并行执行任务1和任务2
    task1 & task1_pid=$!
    task2 & task2_pid=$!

    # 等待任务1和任务2完成,并检查是否有失败
    wait $task1_pid
    if [ $? -ne 0 ]; then
        echo "任务1执行失败"
        exit 1
    fi
    wait $task2_pid
    if [ $? -ne 0 ]; then
        echo "任务2执行失败"
        exit 1
    fi

    # 任务1和任务2都完成后执行任务3
    task3
    if [ $? -ne 0 ]; then
        echo "任务3执行失败"
        exit 1
    fi

    # 任务3完成后执行任务4
    task4
    if [ $? -ne 0 ]; then
        echo "任务4执行失败"
        exit 1
    fi
}

# 调用主函数
main