shell数组

原文地址:
 
磁针石
联系方式: gmail and gtalk: xurongzhong#gmail.com
参考资料
《学习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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值