• Xshell学习第九课:数组与字符串


    数组与字符串

    数组:

    数组说白了就是一段连续的变量,一段连续的内存存储空间

    解决:变量过多的问题;在同一类变量中,我们不需要去定义多个名字,而是以数组的方式来定义;(列表)

    数组名

    索引

    如何去定义数组:

    --declare -i定义整数 (声明)

    --declare -a 定义数组array

    --declare -A 定义嵌套的数组中(在shell中并不常用)

    如何去给数组赋值:

    Array = 0

    1、array[0] = huangchuan    (在计算机语言中,索引一般从0开始计算)(索引并不一定是数字:key-value array[huangchuan]=1.77m)(shell中数组赋值可以跳跃,)

    2、array = (/var/log/*.log)做遍历

       Array = (a,b,c,e)

    3、array=(“huangchuan=177” “huangchaun1=175”)

    4、通过read命令来赋值

       Read -t 延迟 -p “指定说明” -a 输入数组所需的变量值

       Read -a a b c d e

    赋值之后如何去调用数组:

       ${变量名}

       ${数组名[索引]} 定义的是哪个索引,就看到是对应索引指定的值

       ${数组名} 默认调用索引=0的值  $array(最好不要这样写)

       ${数组名[*]}或者是${数组名[@]} 调用数组中所有的值

    练习:统计/var/log/*.log中索引为偶数的文件的行的和

    A = (/var/log/*.log)

    For I in {0..7};do

           If [$[$i%2] -eq 0]

                       Line = `wc -l ${a[$i]} | cut -d’ ’ -f1`

                         Sum + =$line

           fi

    Done

    Echo “输入的行数总和为:$sum”

    1. 调用数组的数组长度

    Length(“变量”)

    1. 添加数组值的特殊方法:${变量名[${#变量名[[@]]}]}=值 或者  ${变量名[${#变量名[*]}]}=“值”

    关于数组的其他操作:

           数组切片

           ${变量名[@]:偏移量:所需要取出值得个数}

                     Echo ${a[*]:2:4}

           ${变量名[@]:偏移量}

    删除值

           Unset ${变量名[索引]}

           注意:删除是索引所对得值,而没有呆着索引一块删除;

    字符串切片

           字符串:${变量名:偏移量:数值个数}

                         ${变量名:-数值个数}        【*注意:冒号后面一定要加空格*】

                         ${变量名:-word} 默认赋值的意思

                           Read “sasasa” test

                           [ -z $test ] && test=abc

    基于模式取子字符串

                         从左自右

                        ${变量名#pattern}  删除pattern第一次匹配到的字符串

                         ${变量名##pattern} 删除所有pattern匹配到的字符串

                    从右自左

                         ${变量名%pattern}

                         ${变量名%%pattern}

    思考:取url中得IP地址或者域名

    字符替换

                         ${变量名/pattern/替换后得字符串}   【pattern】并不是正则表达式,而是文件通配符

                         ${变量名//pattern/替换后得字符串}

                                      匹配所有得pattern并进行替换

                         ${变量名/#pattern/替换后得字符串} 必须pattern出现在行首

                                              指定匹配行首必须时pattern,才能替换

                         ${变量名/%pattern/替换后得字符串} 必须pattern结尾

                                              指定匹配行尾必须是pattern,才能替换

                注意:/ 分隔符,不能替换为(#%等特殊字符,和sed一样)

    查找并删除:

                  替换中不指定替换字符串即为删除

                  ${变量名/pattern}

                  ${变量名//pattern}

                  ${变量名/#pattern}

                  ${变量名/%pattern}

    替换大小写

                  Tr 替换大小写

                  Tr [[:lower:]][[:upper:]] < filename

                  ${变量名^^}将字符串全部替换为大写

                  ${变量名,,}将字符串全部替换为替换小写

    变量赋值:

                  变量名1=${变量名2:-word }注意没有空格!!!!!   输入默认值得作用,变量2没有值,就将word默认值赋值给变量1

                  变量名1=${变量名2:+word} 不常用 变量2有值得情况下,才将word默认值赋值给变量1

                 

    俩个命令:

                  --mktemp 创建临时文件以及目录 temp -- /temp

                                      目的就是避免大家取得文件名字重复;mktemp 名字 .xxxxxx(随机数,随机得字母和数字)

                                       默认创建得时随机得文件

                                       -d 创建得就是随机得目录

                                       File = ····`mktemp a.XXXX`

            --install 复制或者删除文件,用法同copy

                                优点可以指定权限来来复制文件

                                用法:install a文件 b目录  //复制a文件到b目录,并回复初始权限(文件755)(目录得就是644)

                                     -t  源目地址对换

                                        -d 创建

                                        -m MODE

                                        -o OWNER

                                        -g GROUP

  • 相关阅读:
    如何进行有效沟通避免出现误会
    如何进行有效沟通
    怎样提高自己的团队合作能力
    javaScript简介
    css文本格式详解
    css简介及相关概念
    WebGL10---3D模型的加载与使用
    Canvas绘图与动画详解
    Canvas绘制时钟
    WebGL9----将canvas作为纹理,将动画作为纹理(2)
  • 原文地址:https://www.cnblogs.com/huangchuan/p/11420314.html
Copyright © 2020-2023  润新知