美文网首页
bash脚本编程

bash脚本编程

作者: epiiplus1equal0 | 来源:发表于2019-04-04 00:17 被阅读0次

[TOC]

变量: 存储单个元素的内存空间

数组: 存储多个元素的连续的内存空间

数组

# 声明数组:
declare -a array_name
declare -A array_name # 关联数组

# 赋值:
# (1) 一次只赋值一个元素
weekdays[0]="sunday"
weekdays[4]="thursday"
# (2) 一次赋值全部元素
weekdays=("1" "2" "3" "4" "5" "6")
# (3) 只赋值特定元素
weekdays=([0]="sunday" [3]="1" [8]="angery") # 支持稀疏格式赋值
# (4) 
read -a array

# 引用:
${array_name[INDEX]}

# 显示数组中全部元素:
${array_name[*]}或${array_name[@]}

# 数组长度(元素个数):
${#array_name[*]}或${#array_name[@]}

# 数组切片:
${array[@]:offset:number}
    # offset: 要跳过的元素个数
    # number: 要取出的元素个数, 省略:number时取偏移量之后的所有元素

# 追加:
array[${#array[@]}]='val'

# 删除某元素:
unset array[index]

# 关联数组:
declare -A array_name
array_name=([index_name1]='val1' [index_name2]='val2' ...)

# 随机数(产生的随机数都在0~32767)
$RANDOM

bash的字符串处理工具:

# 切片
${var:offset:number}
    # 取字符串的最右侧几个字符(注: 冒号后必须有一空白字符): 
    ${var: -length}

# 基于模式取子串:
${var#*word}  # 自左而右, 匹配var变量所存储的字符串中第一次出现的word, 
              # 删除字符串开头至第一次出现word字符之间的所有字符
${var##*word} # 同上, 删除字符串开头至最后一次出现word字符之间的所有字符
${var%word*}  # 自右而左, 匹配var变量所存储的字符串中第一次出现的word, 
              # 删除字符串开头至第一次出现word字符之间的所有字符
${var%%word*} # 同上, 删除字符串末尾至最后一次出现word字符之间的所有字符

# 示例: url=http://www.magedu.com:80
${url##*:} # 可得端口为80
${url%%:*} # 可得协议为http

# 查找替换:
${var/pattern/substi}  # 查找var所标示的字符串中, 
                     # 第一次能被patern所匹配到的字符串, 以substi替换之
${var//pattern/substi} # 查找var所标示的字符串中, 
                     # 所有能被patern所匹配到的字符串, 以substi替换之
${var/#pattern/substi} # 查找var所标示的字符串中, 
                     # 行首能被patern所匹配到的字符串, 以substi替换之
${var/%pattern/substi} # 查找var所标示的字符串中, 
                     # 行尾能被patern所匹配到的字符串, 以substi替换之

# 查找并删除:
${var/pattern}  # 删除第一次匹配到的
${var//pattern} # 删除所有匹配到的
${var/#pattern} # 只删除行首
${var/%pattern} # 只删除行尾

# 字符大小写转换:
${var^^} # 全转换为大写
${var,,} #        小写

# 变量赋值:
${var:-value}     # 若var为空或未设置, 返回value, 否则返回var的值
${var:=value}     # 若var为空或未设置, 返回value, 并将value赋值给var, 否则返回var的值
${var:+value}     # 若var不空, 则返回value
${var?error_info} # 若var为空或未设置, 返回error_info, 否则返回var的值

为脚本程序使用配置文件:

  • (1) 定义文本文件, 每行定义name=value
  • (2) 在脚本中source此文件即可

mktemp

此命令执行后的返回值为创建的文件或目录, 可以重新赋值给新变量.

mktemp [option]... [template]
    # template: file.XXX (至少3个XXX)
    # option:
        -d 创建临时目录
                  mktemp -d test.XXX
        --tmpdir=/path/to/dir 指明临时文件的存放目录, 此目录必须事先存在

install

  • 此命令用法类似于cp, 但更加强大
install [option]... [-T] source dest
install [option]... source... dir
install [option]... -t dir source...
install [option]... -d dir...
    # option:
        -m mode
        -o owner
        -g group

reference: 马哥教育视频

相关文章

网友评论

      本文标题:bash脚本编程

      本文链接:https://www.haomeiwen.com/subject/gtrxiqtx.html