You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Bash脚本:无文件生成时sleep后退出循环而非持续休眠

处理FAST5文件的Bash脚本修改实现

修改需求

原脚本逻辑:检测到文件则循环处理,未检测到文件则持续休眠陷入死循环。
需要改为:首次未检测到文件时休眠15秒,再次检测仍无文件则退出脚本;若休眠期间生成文件则继续处理流程。

修改后的脚本代码

#!/bin/bash

current_directory=$(pwd)
folder=1
# 定义休眠等待时间(秒)
WAIT_TIME=15

while [ $folder -le 100 ]; do
    # 检测当前fast5目录下的文件数量(避免ls命令的空格问题,改用find更可靠)
    fast5files=$(find "$current_directory/fast5" -maxdepth 1 -type f -name "*.fast5" | wc -l)
    
    if [ $fast5files -ge 1 ]; then
        # 创建目标文件夹并移动文件
        mkdir -p "$current_directory/fast5/$folder"
        mv "$current_directory/fast5"/*.fast5 "$current_directory/fast5/$folder/"
        
        # 执行fast5文件处理程序
        # program does something to fast5files here
        # another program does something to fast5files here
        
        # 用户指定的休眠时间
        sleep "$1"
        ((folder++))
    else
        echo "未找到足够的fast5文件,等待${WAIT_TIME}秒..."
        sleep "$WAIT_TIME"
        
        # 休眠后再次检测文件数量
        fast5files_after_wait=$(find "$current_directory/fast5" -maxdepth 1 -type f -name "*.fast5" | wc -l)
        if [ $fast5files_after_wait -eq 0 ]; then
            echo "仍未检测到fast5文件,退出脚本"
            exit 1
        fi
        # 若检测到文件,循环会回到顶部重新执行处理逻辑
    fi
done

关键修改说明

  1. 修正语法错误:移除原脚本中重复且无法触发的elif分支,重构无文件时的处理逻辑
  2. 二次检测机制:首次检测无文件后,休眠指定时间再次检查文件状态,根据结果决定退出或继续
  3. 优化文件检测:将原ls + grep的方式替换为find命令,避免文件名含空格或特殊字符时的统计错误
  4. 健壮性提升:使用mkdir -p确保文件夹创建成功,避免因文件夹已存在导致脚本中断

内容的提问来源于stack exchange,提问作者littleMinIONbasher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:45:33