SHELL学习之数组及相关面试题

    xiaoxiao2022-07-12  151

    shell之 数组

    一、数组定义方法:

    方法1: [root@localhost ~]# array=(1 2 3) [root@localhost ~]# echo ${array[*]} 1 2 3 方法2: [root@localhost ~]# array=([1]=one [2]=two [3]=three) [root@localhost ~]# echo ${array[*]} one two three 方法3: [root@localhost ~]# array[0]=a [root@localhost ~]# array[1]=b [root@localhost ~]# array[2]=c [root@localhost ~]# [root@localhost ~]# echo ${array[1]} b 方法4:动态定义数组变量,并使用命令的输出结果作为数组的内容 [root@localhost ~]# array=($(ls /array)) [root@localhost ~]# echo ${array[*]} 1.txt 2.txt 3.txt

    二、数组的打印和输出

    1)打印数组元素

    [root@localhost ~]# array=(one two three) [root@localhost ~]# echo ${array[0]} one [root@localhost ~]# echo ${array[1]} two [root@localhost ~]# echo ${array[*]} one two three [root@localhost ~]# echo ${array[@]} one two three

    2)打印元素个数

    [root@localhost ~]# echo ${#array[*]} 3 [root@localhost ~]# echo ${#array[@]} 3

    3)数组的赋值

    如果下标不存在,则自动添加一个新的元素,如果存在,则覆盖原来的值

    [root@localhost ~]# array[3]=four [root@localhost ~]# echo ${array[*]} one two three four [root@localhost ~]# [root@localhost ~]# array[0]=westos [root@localhost ~]# [root@localhost ~]# echo ${array[*]} westos two three four

    4)数组的删除

    [root@localhost ~]# unset array[1] [root@localhost ~]# echo ${array[*]} westos three four [root@localhost ~]# unset array

    5)数组内容截取和替换

    [root@localhost ~]# echo ${array[@]:1:3} 2 3 4 [root@localhost ~]# array=($(echo {a..z})) [root@localhost ~]# echo ${array[@]} a b c d e f g h i j k l m n o p q r s t u v w x y z [root@localhost ~]# [root@localhost ~]# echo ${array[@]:1:3} b c d 替换 [root@localhost ~]# array=(1 2 3 1 1) [root@localhost ~]# [root@localhost ~]# echo ${array[@]/1/b} b 2 3 b b

    三、数组相关面试题

    循环输出数组元素 [root@server tmp]# cat array.sh #!/bin/bash array=(1 2 3 4 5) for ((i=0;i<${#array[*]};i++)) do echo ${array[i]} done [root@server tmp]# sh array.sh 1 2 3 4 5 利用for循环打印下面这句话中字母个数小于6的单词

    I am westos teacher welcome to westos training class

    [root@server tmp]# cat shuzu.sh #!/bin/bash arr=(I am westos teacher welcome to westos training class) for ((i=0;i<${#arr[*]};i++)) do if [ ${#arr[$i]} -lt 6 ];then echo "${arr[$i]}" fi done [root@server tmp]# sh shuzu.sh I am to class
    最新回复(0)