linux arrary usage

Having an array of variables is of no use unless you can use those values somehow. This tech-recipe shows a few methods for looping through the values of an array in the bash shell.


Take, for example, the array definition below:

names=( Jennifer Tonya Anna Sadie )

The following expression evaluates into all values of the array:

${names[@]}

It also can be used anywhere a variable or string can be used.

A simple for loop can iterate through this array one value at a time:

for name in ${names[@]} do
echo $name
# other stuff on $name
done

This script will loop through the array values and print them out, one per line. Additional statements can be placed within the loop body to take further action, such as modifying each file in an array of filenames.

Sometimes it is useful to loop through an array and know the numeric index of the array you are using (for example, so that you can reference another array with the same index). The same loop in the example above can be achieved this way, too:

for (( i = 0 ; i < ${#names[@]} ; i++ )) do
echo ${names[$i]}
# yadda yadda
done

In this example, the value ${#names[@]} evaluates into the number of elements in the array (4 in this case). The individual elements of the array are accessed, one at a time, using the index integer $i as ${names[$i]}

-----------------------------------------------
How to access array variable
The bash shell allows a number of methods for accessing elements of variable arrays. This tech-recipe demonstrates some of these techniques.


Take, for example, the array defined by the following code:

names=( Jennifer Tonya Anna Sadie Molly Millie)

The individual elements in the array can be accessed by their numeric index. (Remember that they start counting a zero.) This can be seen with the following:

${names[0]} -> Jennifer ${names[3]) -> Sadie

All of the elements can be accessed at the same time (which is useful in a for loop) with the following:

${names[@]} ${names[*]}

The number of elements in the array can be obtained with the following:

${#names[@]} -> 6

A range of elements can easily be specified with the following syntax:

${names[@]:2:3} -> Anna Sadie Molly ${names[@]:3} -> Sadie Molly Millie

The first example starts at element 2 (the third element) and returns the next three elements (:2:3). The second example starts at record 3 and returns all of the remaining records (:3).



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值