BASH命令和SHELL脚本总结(8)循环篇

本文深入探讨Shell脚本中 WHILE 和 FOR 循环的应用,以及如何高效遍历文件夹中的文件。通过实例展示了循环结构在文件处理任务中的实际应用,包括变量递增、条件判断及文件读取等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@WHILE循环语句@

v1=1

while [ "$v1"-lt "6" ]#注[和]的前后都有空格, -lt的前后都有空格

do

    echo"this is the $v1 time of showing up"

       v1=$(($v1+1)) #注意$((   ))是数学计算式

done

 

@FOR循环语句@

for ((i=1;i<=$LENGTH_EXTEND_DAYS;i++))
do

    ...

done

例如

filelist=""
for ((i=1;i<=$LENGTH_EXTEND_DAYS;i++))
do
     DATEi=`date +%Y%m%d -d "$DATE $i days ago"`
     if [ $i -le $LENGTH_DAYS ]; then
         file=$OUTPUT_PATH/$DATEi/1day.txt
     else
          file=$OUTPUT_PATH/$DATEi/1day_one.txt
     fi
     if [ -s $file ]; then
          tempfile=$file.tmpfile
          cat $file |awk-F"\t" -v delta=$i '{printf("%s",$1); for (i=2; i<=NF;i++) {split($i,a,"|");printf("\t%s|%s|%s|%d",a[1],a[2],delta+1,a[3]); } printf("\n")}' >$tempfile
          filelist=$filelist""$tempfile    
     fi
done
sort -m --temporary-directory=./ $filelist >$WEEK_MERGE.imcomplete
mv $WEEK_MERGE.imcomplete $WEEK_MERGE
rm -f $filelist

 

@遍历文件夹中的文件@

INDEX_FILE_LIST=`ls$INDEX_WEBSITE_DIR`
for INDEX_FILE_NAME in $INDEX_FILE_LIST
do
    INDEX_TIME=${INDEX_FILE_NAME#*.}   
   CACHE_FILE_HOURLY_OUTPUT=$CACHE_DIR/cache.file.$INDEX_TIME   
    awk -F"\t" '{
        cache_map_single_file[$1]=$3
    }END{
        for(i in cache_map_single_file)
        printi"\t"FILENAME"-"cache_map_single_file[i]
    }'>$CACHE_FILE_HOURLY_OUTPUT $INDEX_WEBSITE_DIR/$INDEX_FILE_NAME
done

 

 

@遍历文件夹中的文件@

filelist=`ls A`
for filename in $filelist
do
  your-command $filename >${filename}.new
done

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值