加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell中map的用法

发布时间:2020-12-15 16:38:13 所属栏目:安全 来源:网络整理
导读:##实例代码 #!/bin/bashcat ./switchSql.txt | while read linedotmp_partition_name=`echo $line | awk -F ' ' '{print $6}'`if [[ "$tmp_partition_name" = "" ]]; thencontinuefistart_flag=${tmp_partition_name:0:3}date_flag=${tmp_partition_name:(($

##实例代码

#!/bin/bash

cat ./switchSql.txt | while read line
do
	tmp_partition_name=`echo $line | awk -F ' ' '{print $6}'`
	if [[ "$tmp_partition_name" = "" ]]; then
		continue
	fi
	
	start_flag=${tmp_partition_name:0:3}
	date_flag=${tmp_partition_name:((${#tmp_partition_name} - 6))}
	echo "${start_flag}${date_flag}" >> ./table_partition_date.txt
done
sort ./table_partition_date.txt | uniq > ./tpd_map.txt
rm ./table_partition_date.txt

declare -a partition_value_map=()
OUTFILE=`cat ./tpd_map.txt`
while read line
do
	#业务数据后台查询,这里只模拟
	part_flag="2"
	partition_value="170724"
	if [[ "$line" =~ "PD" ]]; then
		partition_value="170718"
		part_flag="1"
	fi

	if [[ "$line" =~ "PM" ]]; then
		partition_value="170801"
		part_flag="3"
	fi

	if [[ "$line" =~ "PY" ]]; then
		partition_value="180717"
		part_flag="4"
	fi
	
	date_flag=${line:((${#line} - 6))}
	partition_value_map["${part_flag}${date_flag}"]="${partition_value}"
done <<EOF
$OUTFILE
EOF

get_partition_high_value(){
	partition_name=$1
	part_flag="2"
	if [[ "$partition_name" =~ "PD" ]]; then
		part_flag="1"
	fi
	if [[ "$partition_name" =~ "PM" ]]; then
		part_flag="3"
	fi
	if [[ "$partition_name" =~ "PY" ]]; then
		part_flag="4"
	fi

	date_flag=${partition_name:((${#partition_name} - 6))}
	match_str="${part_flag}${date_flag}"
	high_value=""
	for key in ${!partition_value_map[@]}
	do
		if [ "$match_str" = "$key" ] ; then
			high_value="${partition_value_map[$key]}"
			break;
		fi
	done
	echo $high_value
}

high_value=`get_partition_high_value "PD_IND_H_1234_170717"`
echo $high_value
high_value=`get_partition_high_value "PW_IND_H_1234_170717"`
echo $high_value
high_value=`get_partition_high_value "PM_IND_H_1234_170701"`
echo $high_value

##组织数据

alter table PM4H_DB.IND_M15_44 exchange partition PD_IND_M15_44_170717 with table PM4H_DB.PW_IND_M15_44_160704;
alter table PM4H_DB.IND_2D_33_1 exchange partition PW_IND_2D_33_1_170717 with table PM4H_DB.PW_IND_2D_33_1_160704;
alter table PM4H_DB.IND_2H_62_12 exchange partition PM_IND_2H_62_12_170701 with table PM4H_DB.PW_IND_2H_62_12_160704;
exit;

##运行结果

pm22:/netwatcher/dbbackup> sh map.sh 
170718
170724
170801

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读