场景:
我有一个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
。
我想在上面的脚本中包含适当的逻辑,以便在第二天的运行中删除旧的标志文件。
如何删除前一天的所有文件?
如果说脚本连续几天没有运行,那么存在的标志文件将有更旧的日期。所以我不能简单地使用前一天的日期删除标志文件。
我正在寻找给定当前日期的逻辑,它应该删除文件名中附加日期小于当前日期的所有文件。
答案 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