bash 的组数(array)处理方法

一般而言,A="a b c def" 这样的变量只是将 $A 替换为一个单一的字符串,
但是改为 A=(a b c def) ,则是将 $A 定义为组数…
bash 的组数替换方法可参考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部组数)
${A[0]} 可得到 a (第一个组数),${A[1]} 则为第二个组数…
${#A[@]} 或 ${#A[*]} 可得到 4 (全部组数数量)

${#A[0]} 可得到 1 (即第一个组数(a)的长度),${#A[3]} 可得到 3 (第四个组数(def)的长度)
A[3]=xyz 则是将第四个组数重新定义为 xyz …

${#var} 可计算出变量值的长度

参考:http://my.oschina.net/flylxl/blog/510960

--------------------------------------------------------------------------------------------------------------------------------

练习:

[root@izptec import_label_plat]# A="a b c def"
[root@izptec import_label_plat]# echo $A
a b c def
[root@izptec import_label_plat]# A=(a b c def)  
[root@izptec import_label_plat]# echo $A
a
[root@izptec import_label_plat]# echo $A[0]
a[0]
[root@izptec import_label_plat]# echo ${A[0]}
a
[root@izptec import_label_plat]# echo $A[1]
a[1]
[root@izptec import_label_plat]# echo ${A[1]}
b
[root@izptec import_label_plat]# echo ${A[*]}
a b c def
[root@izptec import_label_plat]# echo ${A[@]}
a b c def
[root@izptec import_label_plat]# echo ${#A[*]}
4

--------------------------------------------------------------------------------------------------------------------------------

实例:

#!/bin/sh


mkdir -p /tmp/label;

FILE_ID=("91304457" "91304452" "91304453" "91304410");
FILE_NAME=("城区_中关村_工作" "城区_亚运村_休闲" "城区_亚运村_居住" "城区_马甸_休闲");

for ((i=0; i<${#FILE_ID[*]};i++));do
    echo "cp data/t${FILE_ID[i]}.txt /tmp/label/${FILE_NAME[i]}.txt"
done;

你可能感兴趣的:(Shell)