Linux shell 数组

本文介绍了Bash shell中的数组使用方法,包括两种赋值方式、数组元素的访问与修改、数组长度获取等基本操作,以及通过示例展示了选择排序算法的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料

*《学习bash shell 第3版》6.4. Arrays

Bash中还可以使用数组变量,其赋值有两种:
(1) name = (value1 ... valuen) 此时下标从0开始,也可以:names=([2]=alice [0]=hatter [1]=duchess)。
(2) name[index] = value

<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

数组可以使用declare –a来显示声明,数组下标的范围没有任何限制,同时也不必使用连续的分量。可以通过${array[i]}.访问数组中的元素。如果不指定元素,则表示第一个元素。@ 与*相同,但是使用时加引号,并在引号中返回每个参数,*则作为一个整体的字符串返回。



# A=(a b c def)

# echo ${A[@]}

a b c def

# echo ${A}

a

echo ${A[*]}

a b c def

for i in "${A[@]}"; do

echo $i

done

显示的结果:

a

b

c

def



for i in "${A[*]}"; do

echo $i

done

显示结果:

a b c def



显示目前有值的数组序号:――bash 3.0以后才支持。

# echo ${!A[@]}

0 1 2 3

//取得数组元素的个数

# echo ${#A[@]}

4

显示第3个元素里面的元素的个数:

echo ${#A[3]}

3

echo ${#A[2]}

1



//清除变量
$ unset A
$ echo ${A[@]}
$

A=B
B=C
unset $A 事实上所取消的变量是 B 而不是 A



//清空变量,即将值变为空
$ A=
$ echo ${A[@]}
$





#!/bin/bash

for i in $(cut -f 1,3 -d: /etc/passwd) ; do

echo $i

array[${i#*:}]=${i%:*}

done

echo "User ID $1 is ${array[$1]}."

echo "There are currently ${#array[@]} user accounts on the system."







用shell实现的选择排序

# vi test2

#!/bin/bash



values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)

numvalues=${#values[@]}

for (( i=0; i < numvalues; i++ )); do

lowest=$i

for (( j=i+1; j < numvalues; j++ )); do

if [ ${values[j]} -le ${values[$lowest]} ]; then

lowest=$j

fi

done

temp=${values[i]}

values[i]=${values[lowest]}

values[lowest]=$temp

done

for (( i=0; i < numvalues; i++ )); do

echo -ne "${values[$i]}\t"

done

echo -e "\n\n-------end---------\n"



环境变量DIRSTACK就是使用数组实现的。其他还有BASH_VERSINFO, PIPESTATUS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值