linux如何清空数组,《快乐的linux命令行》-笔记3 数组

Shell - 数组

数组赋值

单赋值

name[subscript]=value

多赋值

name=(value1 value2 ...)

数组操作

看demo,重点在于*,@ 以及"" 之间的差别。

我们可能期望的操作是 for i in "${animals[@]}"; do echo $i; done

[me@linuxbox ~]$ animals=("a dog" "a cat" "a fish")

[me@linuxbox ~]$ for i in ${animals[*]}; do echo $i; done

a

dog

a

cat

a

fish

[me@linuxbox ~]$ for i in ${animals[@]}; do echo $i; done

a

dog

a

cat

a

fish

[me@linuxbox ~]$ for i in "${animals[*]}"; do echo $i; done

a dog a cat a fish

[me@linuxbox ~]$ for i in "${animals[@]}"; do echo $i; done

a dog

a cat

a fish

确定数组元素个数

[me@linuxbox ~]$ a[100]=foo

[me@linuxbox ~]$ echo ${#a[@]} # number of array elements

1

[me@linuxbox ~]$ echo ${#a[100]} # length of element 100

3

找到数组使用的下标

因为 bash 允许赋值的数组下标包含 “间隔”,有时候确定哪个元素真正存在是很有用的。为做到这一点, 可以使用以下形式的参数展开:

${!array[*]}

${!array[@]}

[me@linuxbox ~]$ foo=([2]=a [4]=b [6]=c)

[me@linuxbox ~]$ for i in "${foo[@]}"; do echo $i; done

a

b

c

[me@linuxbox ~]$ for i in "${!foo[@]}"; do echo $i; done

2

4

6

在数组末尾添加元素

如果我们需要在数组末尾附加数据,那么知道数组中元素的个数是没用的,因为通过 * 和 @ 表示法返回的数值不能 告诉我们使用的最大数组索引。幸运地是,shell 为我们提供了一种解决方案。通过使用 += 赋值运算符, 我们能够自动地把值附加到数组末尾。这里,我们把三个值赋给数组 foo,然后附加另外三个。

[me@linuxbox~]$ foo=(a b c)

[me@linuxbox~]$ echo ${foo[@]}

a b c

[me@linuxbox~]$ foo+=(d e f)

[me@linuxbox~]$ echo ${foo[@]}

a b c d e f

数组排序

#!/bin/bash

# array-sort : Sort an array

a=(f e d c b a)

echo "Original array: ${a[@]}"

a_sorted=($(for i in "${a[@]}"; do echo $i; done | sort))

echo "Sorted array: ${a_sorted[@]}"

厉害了,先print一遍 通过管道 sort 整个赋值

删除数组

删除一个数组,使用 unset 命令:

[me@linuxbox ~]$ foo=(a b c d e f)

[me@linuxbox ~]$ echo ${foo[@]}

a b c d e f

[me@linuxbox ~]$ unset foo

[me@linuxbox ~]$ echo ${foo[@]}

[me@linuxbox ~]$

任何没有下标的对数组变量的引用都指向数组元素0:

[me@linuxbox~]$ foo=(a b c d e f)

[me@linuxbox~]$ echo ${foo[@]}

a b c d e f

[me@linuxbox~]$ foo=A

[me@linuxbox~]$ echo ${foo[@]}

A b c d e f

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值