Shell并发执行及共用CASE

SHELLLINUX2015-11-06 10:22
  • concurrency.sh
#!/bin/bash
# 测试并发和共用;并发重点注意tee/col命令的理解使用

#并发执行测试
HANDLE_ECTYPE_SHEET()
{
    sleep $(echo $RANDOM |cut -c 1)
    echo BEGIN, $host_port
    sleep $(echo $RANDOM |cut -c 1)
    echo END, $host_port
}

SINGLE_DATABASE=HANDLE_ECTYPE_SHEET
source databases.sh; WHOLE_DATABASE|tee

echo -e "\nTHIS IS END OF CONCURRENCY\n"

#共用DB模块测试
source databases.sh; 
for area in 102 115 175 138 143; do 
    SELECT_DB_CASE $area continue #返回chost_port参数
    echo $host_port
done

echo -e "\nTHIS IS END OF CASE\n"
  • databases.sh
#!/bin/bash
# 用于返回CDB连接信息,脚本不执行任何操作

# 遍历数据库,调用方法如下:
# SINGLE_DATABASE=脚本内的函数名
# source databases.sh; WHOLE_DATABASE|tee
WHOLE_DATABASE()
{
host_port='-h10.1.2.3 -P1000'; $SINGLE_DATABASE|col & # 内测区
host_port='-h10.1.2.3 -P1001'; $SINGLE_DATABASE|col & # 1/2/3区
host_port='-h10.1.2.3 -P1004'; $SINGLE_DATABASE|col & # 4/5/6/7区
host_port='-h10.1.2.3 -P1008'; $SINGLE_DATABASE|col & # 8/9/10/11区
host_port='-h10.1.2.3 -P1012'; $SINGLE_DATABASE|col & # 12/13/14/15区
host_port='-h10.1.2.3 -P1016'; $SINGLE_DATABASE|col & # 16/17/18/19/20区
host_port='-h10.1.2.3 -P1021'; $SINGLE_DATABASE|col & # 21/22/23/24/25区
host_port='-h10.1.2.3 -P1026'; $SINGLE_DATABASE|col & # 26/27/28/29/30区
host_port='-h10.1.2.3 -P1031'; $SINGLE_DATABASE|col & # 31/32/33/34/35区
host_port='-h10.1.2.3 -P1036'; $SINGLE_DATABASE|col & # 36/37/38/39/40区
host_port='-h10.1.2.3 -P1041'; $SINGLE_DATABASE|col & # 41/42/43/44/45区
}

# 单个数据库,调用方法如下:
# source databases.sh;
# SELECT_DB_CASE $area continue #返回host_port参数(注意$2标识)
SELECT_DB_CASE()
{
area="$1"; [[ -z "$area" ]] && exit
runFlag="$2"; runFlag=${runFlag:="exit"}
case $area in 
    1   | 2   ) host_port="-h10.1.2.3 -P1000" ;;
    101 | 102 | 103 ) host_port="-h10.1.2.3 -P1001" ;;
    104 | 105 | 106 | 107 ) host_port="-h10.1.2.3 -P1004" ;;
    108 | 109 | 110 | 111 ) host_port="-h10.1.2.3 -P1008" ;;
    112 | 113 | 114 | 115 ) host_port="-h10.1.2.3 -P1012" ;;
    116 | 117 | 118 | 119 | 120 ) host_port="-h10.1.2.3 -P1016" ;;
    121 | 122 | 123 | 124 | 125 ) host_port="-h10.1.2.3 -P1021" ;;
    126 | 127 | 128 | 129 | 130 ) host_port="-h10.1.2.3 -P1026" ;;
    131 | 132 | 133 | 134 | 135 ) host_port="-h10.1.2.3 -P1031" ;;
    136 | 137 | 138 | 139 | 140 ) host_port="-h10.1.2.3 -P1036" ;;
    141 | 142 | 143 | 144 | 145 ) host_port="-h10.1.2.3 -P1041" ;;
    *   ) echo "没有找到[$area]游戏分区"; ${runFlag} ;;
esac
}

原文链接: http://blog.jtwo.me/concurrent-execution-and-common-case