首页 > 解决方案 > 每当出现新目录时如何在 BASH 中实现等待功能

问题描述

我有以下文本文件(namelist.txt)

&share
  wrf_core = 'ARW',
  max_dom = 3,
  start_date ='YYYY-MM-DD_HH:00:00','YYYY-MM-DD_HH:00:00','YYYY-MM-DD_HH:00:00',
  end_date   ='YYYY-MM-DD_HH:00:00','YYYY-MM-DD_HH:00:00','YYYY-MM-DD_HH:00:00',
  interval_seconds = 21600,
  io_form_geogrid = 2,
  debug_level=0,
/

INPUT 文件夹包含以下子目录:

2021021000
2021021006
2021021012
2021021018
2021021100

每次在 INPUT 文件夹中出现新的子目录时,我都想更新 YYYY-MM-DD_HH。

到目前为止,我有以下脚本。

#! /bin/bash
cd INPUT
dirs=([0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-2][0-9]/)
last="${dirs[-1]}"

sed -i "s/YYYY-MM-DD_HH/${last:0:4}-${last:4:2}-${last:6:2}_${last:8:2}/g" namelist.txt

在其他一些过程之后,我输入这个回到原来的 YYYY-MM-DD_HH:

sed -i "s/${last:0:4}-${last:4:2}-${last:6:2}_${last:8:2}/YYYY-MM-DD_HH/g" namelist.txt

(a) 在 bash 中有没有更有效的方法来做到这一点?

(b) bash 中是否有“等待”功能,如果没有可用的新目录,进程将不会继续?

我该如何实现这一点,以便脚本仅在出现此2021021106目录后再次运行。

我会很感激这方面的任何帮助。

标签: bashwait

解决方案


推荐阅读