您的位置:首页 > 运维架构 > Shell

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

2012-09-29 16:38 736 查看
@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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: