数组在各种语言之中都是比较重要的一个概念
数组定义
a=("aaa" "bbb" "ccc")
echo ${a[0]}
echo ${a[1]}
echo ${a[2]}
d=(aaa bbb ccc)
echo ${d[0]}
echo ${d[1]}
echo ${d[2]}
b=(
"aaa"
"bbb"
"ccc"
)
echo ${b[0]}
echo ${b[1]}
echo ${b[2]}
c=(
aaa
bbb
ccc
)
echo ${c[0]}
echo ${c[1]}
echo ${c[2]}
====================
sh test.sh
aaa
bbb
ccc
aaa
bbb
ccc
aaa
bbb
ccc
aaa
bbb
ccc
可以看出,数组要定义于一个小括号内,与php,python语法有点不同,元素之前如果在一行要用空格格开,不能用逗号。
function test1(){
b=(
"aaa"
"bbb"
"ccc"
)
}
test1
echo ${b[0]}
echo ${b[1]}
echo ${b[2]}
===========
sh test.sh
aaa
bbb
ccc
放到函数里一样能用,变量默认就是全局
数组读取
cat factory_RDS_table_list
railway_order_model_pts
railway_order_model
railway_order_model_sh
railway_part_data
railway_part_node_1
=============================
RDS_LIST="/data2/yfbin/factory_RDS_table_list"
TABLES=(`cat ${RDS_LIST}`)
echo ${TABLES[@]}
echo ${TABLES[0]}
echo ${TABLES[1]}
=============================
sh test.sh
railway_order_model_pts railway_order_model railway_order_model_sh railway_part_data railway_part_node_1 railway_batch_status
railway_order_model_pts
railway_order_model
如果文件里的文本以回车行为分隔,这样可以直接cat出来,赋值给数组变量
我们也可以使用for,while等循环读取出来
使用for循环读取数组的形式
RDS_LIST="/data2/yfbin/factory_RDS_table_list"
TABLES=(`cat ${RDS_LIST}`)
ALL=("${TABLES[*]}")
LIST=("${TABLES[@]}")
echo "1:"${TABLES}
echo "2:"${TABLES[0]}
echo "3:"${ALL}
echo "4:"${LIST}
echo "=================="
for ((i=0;i
do
echo $i":"${TABLES[$i]}
done
echo "=================="
for TABLE in ${TABLES[@]};
do
echo $TABLE
done
==================
sh test.sh
1:railway_order_model_pts
2:railway_order_model_pts
3:railway_order_model_pts railway_order_model railway_order_model_sh railway_part_data railway_part_node_1 railway_batch_status
4:railway_order_model_pts
==================
0:railway_order_model_pts
1:railway_order_model
2:railway_order_model_sh
3:railway_part_data
4:railway_part_node_1
5:railway_batch_status
==================
railway_order_model_pts
railway_order_model
railway_order_model_sh
railway_part_data
railway_part_node_1
railway_batch_status
获得数组中所有值:
${数组名[@]}、${数组名[*]}
数组名[@]得到是以空格隔开的元素,可以用在数组遍历中;数组名[*]得到的是一整个字符串。
一些关于数组的操作