zoukankan      html  css  js  c++  java
  • shell脚本之数组

    数组与字符串:
    数组
    数组说白了就是一段连续的变量,一段连续的内存存储空间
    解决:变量过多的问题;在同一变量中,我们不需要去定义多个名字,而是以数组的方式来定义;(列表)
    共好学院云三班【1】=王鑫
    1、数组名
    2、索引
    3、数值

    如何定义数组:
    declare -i 整数
    declare -a 定义数组
    declare -A 定义嵌套的数组
    共好云班【1】=云计算专业
    云计算专业【1】=云三班
    云三班【1】=王鑫
    array=1 正数型
    如何给数组赋值:
    array()=0
    1、array【0】=王鑫(在计算机语言中,索引一般从零开始)
    (注意:索引并不一定是数字:key-value array)
    (shell中数组赋值可以跳跃,)
    2、array=(/var/log/*.log)
    做遍历
    array=(a,b,e,d,)
    3、array=('王鑫=165' ‘于小倩=140’)
    4、通过read命令赋值
    read -t 【延时】-p "指定说明"
    read -a 输入数组所需的变量值
    read -a a b c d e
    如何调用数组:
    ${数组名}
    ${数组名【索引】}
    ${数组名}默认调用数组名名为0
    ${数组名【*】}或者${数组名【@】}调用数组所有的名
    1、调用数组的数组长度
    length("变量")
    ${#变量名【*】}或者${#变量名【@】}
    2、添加数组的特殊方式
    ${变量名【${变量名【@】}】}=“值”或者${变量名[#变量名[*]]}=“值”
    关于数组的操作
    数组切片
    ${变量名【@】:偏移量:所需要取出值的个数}
    ${a[*]:2:4}
    ${变量名[@]:偏移量}
    删除值
    unset ${变量名【索引】}
    注意:删除是索引所对的值,而没有带着索引一块删除
    修改值
    a[3]=c
    a[3]=d 覆盖及修改

    字符串:
    printf
    name=张卓
    height=183CM
    python (%s,她的身高为%d)% (name,height)
    输出:张卓,身高为183CM
    占位符
    %s
    %d
    %f
    %[num]s 知道该字符串占位的宽度
    %-[num]s 代表坐对齐
    [居中对齐]
    1、字符串切片:
    数组切片:${变量名【@】:偏移量:数值个数}
    字符串:${变量名:偏移量:数值个数}
    ${变量名:-数值个数}【注意:冒号后面一定要加空格*】
    ${变量名:-Word}默认赋值的意思
    read "sasasa:" test
    [-z $test]&&test=aabbccdd
    2、基于模式取子字符串:
    ${变量名#pattern} 删除pattern 第一次匹配到的字串
    ${变量名##pattern}删除所有pattern匹配的字符串
    从左自右
    ${变量名%pattern}
    ${变量名%%pattern}
    3、字符替换
    ${变量名/pattern/替换后的字符串}【pattern并不是正则表达式而是文件通配符】
    匹配第一个pattern,来进行替换
    ${变量名//pattern/替换后的字符串}
    匹配所有哦pattern,并进行替换
    ${变量名/#pattern 替换后的字符串}
    指定匹配行首必须是pattern,才会替换
    ${变量名/%pattern 替换后的字符串}
    指定匹配行尾必须是pattern,才会替换
    注意:/ 分隔符 ,不能替换为(# % 等特殊字符,和sed不一样)
    4、查找并删除
    替换中,不指定替换字符串,即为删除
    ${变量名/pattern}
    ${变量名//pattern}
    ${变量名/#pattern}
    ${变量名/%pattern}

    5、替换大小写
    tr 替换大小写
    tr [[:lower:]][[:upper:]]<filename
    ${变量名^^} 将字符串全部替换为大写
    ${变量名,,} 将字符串全部替换为小写
    6、变量赋值
    变量名1=${变量名:-Word} 注意没有空格! 输入默认值的作用,变量2没有值,就将Word默认值赋值给变量1
    变量名2=${变量名:+Word} 不常用 变量2有值的情况下,才将Word默认值给变量1
    ${变量2:=Word}如何变量没有赋值,就将Word赋值给变量,有值,则使用原来的值。
    变量1=${变量2:?error_infor}如果变量没有赋值,输出error_info错误信息
    不知道如何使用?
    7、二个命令
    mktemp 创建临时文件以及目录 temp -- /temp
    避免大家取的文件名重复;Mktemp 。名字.XXXXXX(XXXX代表随机数)
    默认创建是随机的文件
    -d 创建的就是随机的
    install 复制或删除文件。用法同copy
    优点可以指定权限来复制文件
    用法:install a 文件 b 目录2 //复制a文件到b目录,并回复初始权限
    -t原目对换
    -d删除
    -m MODE
    -o OWNER
    -d GROUP

  • 相关阅读:
    论信息系统项目沟通管理
    程序员到底怎么了
    Spring DBCP用xml和properties2种格式配置DataSource
    Spring Aop的理解和简单实现
    数据库常见面试题总结
    java常见面试题总结
    【JavaEE】企业面试问题-Java基础
    Java String常见面试题汇总
    JavaScript事件详解
    JavaScript函数使用技巧
  • 原文地址:https://www.cnblogs.com/wangshilin/p/11384717.html
Copyright © 2011-2022 走看看