ksh array variable


Define Array Variable

# Define array
set -A VAR1 V11 V12 # define an array VAR1 contains 2 element: V11 and V12
VAR2[2]=V22         # define an array VAR2 contains 1 element: V22
VAR3=(V31 V32 V33)  # define an array VAR3 contains 3 element: V31, V32, and V33

Get Array Size

echo ${#VAR1[*]}    # 2
echo ${#VAR2[*]}    # 1
echo ${#VAR3[*]}    # 3

Notice: this is the occupied size, without idle slot; for example

Get Array Element List

# Get array elements list
echo ${VAR1[*]}     # V11 V12
echo ${VAR2[*]}     # V22
echo ${VAR3[*]}     # V31 V32 V33


Refer Array Element

echo ${VAR1[0]}     # V11
echo ${VAR1[1]}     # V12
echo ${VAR2[0]}     # null, because VAR2[0] is not defined
echo ${VAR2[1]}     # null, because VAR2[1] is not defined
echo ${VAR2[2]}     # V22
echo ${VAR3[0]}     # V31
echo ${VAR3[1]}     # V32
# Notice: array index start from 0, and VAR[0] == VAR
echo $VAR1          # V11
echo $VAR2          # null, because VAR2[0] is not defined
echo $VAR3          # V31

Assign Array Element

VAR4=(AAA BBB CCC)
VAR4[1]=DDD
echo ${VAR4[*]}     # AAA DDD CCC

# Array (not element) assignment
VAR5=(AAA BBB)
VAR5+=(CCC DDD)
echo ${VAR5[*]}     # AAA BBB CCC DDD

Traverse An Array

VARV=(AAA BBB CCC)
for e in ${VARV[*]}; do
   echo "element=$e";
done

# case 2
i=0
while [ $i -lt ${#COLORS[@]} ]
do
    print ${COLORS[$i]}
    (( i=i+1 ))
done


Associative Array

# Define associative array
typeset -A VARA1
VARA1["aa"]="AAAA"
VARA1["bb"]="BBBB"
VARA2=(
["cc"]="CCCC"
["dd"]="DDDD"
)


Array Elements List and Index List

echo ${VARA1[@]}     # AAAA BBBB
echo ${!VARA2[@]}    # cc dd

Access an element

# Access an element
echo ${VARA1[aa]}    # AAAA
echo ${VARA2["dd"]}  # DDDD

Loop elements

# Loop elements
for e in "${!VARA2[@]}"
do
   echo "VARA2[$e]=${VARA2[$e]}"
done



Notice:

Associative array cannot use index to access an element any more.

COLORS[0] will not get the value of COLORS[AA]


Usage Sample

# Array indices start from 0, it cannot be a negative value.

# Array can have empty slots, it's not necessary that all elements are consecutive.


X=Sun        # X is a general variable

X[1]=Mon    # X is transformed into an array variable.

                  # The original assignment to variable X is assigned X[0].


X[2]=Tue  
X[6]=Sat    # Here X has 4 elements, X[0], X[1], X[2], X[6];

                # X[3], X[4], X[5] is empty slot.

                # Array length ${#X[@]} will return value 4


# Loop array using indices
# Output:
#   num=4
#   X[0]=Sun
#   X[1]=Mon
#   X[2]=Tue
#   X[3]=
#   X[4]=

# Notices:
#  Though X[6] is a valid value, it does not show in the loop because
#  its indice 6 is out array size 4.

num=${#X[@]}
echo "num=$num"

for i in {0..$num}
do
  echo "X[$i]="${X[$i]}
done

# Loop array using elements
# Output:
#   Sun
#   Mon
#   Tue
#   Sat
for var in  ${X[*]}
do
  echo $var
done

# Delete an array element, using unset
# Output:
#   num=3
#   Sun
#   Mon
#   Sat

unset X[2]
num=${#X[@]}

echo "num=$num"

for var in  ${X[*]}
do
  echo $var;
done


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值