unix脚本中条件文件删除的逻辑

时间:2014-05-23 07:46:30

标签: unix

场景:

我有一个unix脚本,它生成一个名为TARGET_FILE的文件。

我必须在文件中写一个变量runType

如果某一天脚本第一次运行,那么runType将为NEWRUN,否则它将具有值RERUN

评估runType我写了以下逻辑:

#!/bin/ksh
# get the date from database
curr_dt=logic to get date from database

# create and echo the filename by joining the date
myFlagFileName=My_Flag_File_$curr_dt
echo $myFlagFileName

# check if the file exists
if [ -f $MY_DIR/$myFlagFileName ];
then
    # RERUN if exists
    runType=RERUN
else 
    # NEW if not exists and create the file
    runType=NEWRUN
    touch $MY_DIR/$myFlagFileName
fi 

# echo the evaluated runType
echo $runType

脚本将NEWRUN分配给runType并生成一个标记文件,其名称中附加了当前日期,并在同一天重新运行,它会检查标志文件是否存在并相应地设置{{1}转到runType

我想在上面的脚本中包含适当的逻辑,以便在第二天的运行中删除旧的标志文件。

如何删除前一天的所有文件?

如果说脚本连续几天没有运行,那么存在的标志文件将有更旧的日期。所以我不能简单地使用前一天的日期删除标志文件。

我正在寻找给定当前日期的逻辑,它应该删除文件名中附加日期小于当前日期的所有文件。

1 个答案:

答案 0 :(得分:0)

在当天的第一次运行中,应该只有一个标志文件 - 今天的标志文件。因此,此时您可以安全地从其他任何日期删除所有其他标志文件。如果没有要删除的旧标志文件,则错误消息将被丢弃到/dev/null

#!/bin/ksh
# get the date from database
curr_dt=logic to get date from database

# create and echo the filename by joining the date
myFlagFileName=My_Flag_File_$curr_dt
echo $myFlagFileName

# check if the file exists
if [ -f $MY_DIR/$myFlagFileName ];
then
   # RERUN if exists
   runType=RERUN
else 
   # NEW if not exists and create the file
   runType=NEWRUN
   rm $MY_DIR/My_Flag_File* >/dev/null 2>&1         # NEW CODE HERE
   touch $MY_DIR/$myFlagFileName
fi 

# echo the evaluated runType
echo $runType