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

  • 相关阅读:
    HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树
    字典树 HDU 1075 What Are You Talking About
    字典树 HDU 1251 统计难题
    最小生成树prim算法 POJ2031
    POJ 1287 Networking 最小生成树
    次小生成树 POJ 2728
    最短路N题Tram SPFA
    poj2236 并查集
    POJ 1611并查集
    Number Sequence
  • 原文地址:https://www.cnblogs.com/wangshilin/p/11384717.html
Copyright © 2011-2022 走看看