shell- 数组

目录

一、数组定义

二、数组操作

1、获取数组长度

2、引用数组

3、遍历数组

4、数组的删除 

三、实际应用


 

一、数组定义

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小,与大部分编程语言类似,数组元素的下标由0开始。

Shell 数组用括号来表示,元素用"空格"符号分割开。

array_name=(value1 ... valuen)
  • 定义方法
#!bin/sh

#  一次赋多个值可以这样定义
array=( one two three )
echo ${array[@]}

# 也可以这样定义
array=(
    one
    two
    three
)
echo ${array[@]}

# 还可以单独定义数组的各个部分
array[0]=one
array[1]=two
array[2]=three
echo ${array[@]}

二、数组操作

1、获取数组长度

  • 取得数组元素的个数 ​​​​​​​${#数组名[@]}或者${#数组名[*]}
[root@localhost text]# array=(one two three)
[root@localhost text]# echo ${#array[@]}
3
[root@localhost text]# echo ${#array[*]}
3
 
  • 取得数组单个元素的长度${#数组名[下标]}
[root@localhost text]# echo ${#array[0]}
3
[root@localhost text]# echo ${#array[1]}
3
[root@localhost text]# echo ${#array[2]}
5
  • 获取数组下标 ${!数组名[下标]}
[root@localhost text]# echo ${!array[*]}
0 1 2

 

2、引用数组

  • 获取单个元素${数组名[下标]}
[root@localhost text]# echo ${array[1]}
two
[root@localhost text]# echo ${array[0]}
one
[root@localhost text]# echo ${array[2]}
three
  • 获取全部元素 ${数组名[@]}或者${数组名[*]}
[root@localhost text]# echo ${array[@]}
one two three
[root@localhost text]# echo ${array[*]}
one two three

3、遍历数组

  • 通过数组下标来遍历数组:
array=( one two three )
for i in ${!array[@]}
do
    echo ${array[i]}
done

执行结果 :

one
two
three
  • 直接遍历数组
array=( one two three )
for i in ${array[@]}
do
    echo $i
done

4、数组的删除 

unset array[1] # 删除数组中第一个元素 
unset array # 删除整个数组

三、实际应用

1、从标准输入读入n次字符串,每次输入的字符串保存在数组array
 
n=0
while true
do
read -p ">>>:" num
array[$n]=$num
echo ${array[@]}
let n++
done

执行结果

[root@localhost text]# vim exp_48.sh
[root@localhost text]# sh exp_48.sh
>>>:123
123
>>>:456
123 456
>>>:ss
123 456 ss

 2、将字符串里的字母逐个放入数组,并输出到标准输出

str="abcdefgdnklsfnksjfbkjrsgsjekdflsekg"
n=0
while ((n<${#str}))
do
    #echo ${str:$n:1}
    array[$n]=${str:$n:1}
    #echo ${array[@]}
    let n++
done
echo ${array[@]}

执行结果

[root@localhost text]# sh exp_49.sh
a b c d e f g d n k l s f n k s j f b k j r s g s j e k d f l s e k g

3、把1-3 3个数字存到数组里 分别乘以8 然后依次输出。

#!/bin/bash 
array1=(`seq 3`) 
for ((i=0;i<${#array1[@]};i++)) 
do
    echo $[${array1[$i]}*8] 
done
[root@localhost text]# sh text01.sh
8
16
24

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值