MST
星途 面试题库

面试题:Bash脚本自动化的复杂任务依赖处理

假设你有一系列相互依赖的任务,任务A生成数据文件,任务B对该数据文件进行处理并生成结果文件,任务C将结果文件上传到远程服务器。请使用Bash编写一个脚本来自动化这些任务,确保任务按顺序执行且当前任务失败时后续任务不再执行。同时说明如何处理任务间的数据传递和错误处理机制。
44.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 定义任务A
taskA() {
    # 这里假设生成数据文件的命令是generate_data.sh
    ./generate_data.sh
    return $?
}

# 定义任务B
taskB() {
    # 这里假设处理数据文件并生成结果文件的命令是process_data.sh
    if [ -f data_file ]; then
        ./process_data.sh data_file
        return $?
    else
        echo "数据文件未找到,任务B无法执行"
        return 1
    fi
}

# 定义任务C
taskC() {
    # 这里假设上传结果文件到远程服务器的命令是upload_result.sh
    if [ -f result_file ]; then
        ./upload_result.sh result_file
        return $?
    else
        echo "结果文件未找到,任务C无法执行"
        return 1
    fi
}

# 按顺序执行任务
taskA && taskB && taskC

# 错误处理机制说明:
# 1. 每个任务函数通过return $?返回该任务执行的退出状态码,0表示成功,非0表示失败。
# 2. 使用&&逻辑与运算符按顺序执行任务,当前面的任务成功(返回状态码为0)时才会执行后面的任务,若前面任务失败则后续任务不再执行。
# 3. 在任务B和任务C中,首先检查依赖的文件是否存在,若不存在则输出错误信息并返回失败状态码,以确保任务按依赖顺序执行且在依赖不满足时及时终止。

# 任务间数据传递说明:
# 1. 任务A生成的数据文件作为任务B的输入,任务B处理后生成的结果文件作为任务C的输入。
# 2. 通过文件系统来传递数据,即任务A生成的数据文件存储在本地文件系统,任务B从文件系统读取该文件进行处理并生成结果文件,任务C再从文件系统读取结果文件进行上传。