字符串

字符串字符串切片

  • ${#var}: 返回字符串变量var 的长度

  • ${var:offset}: 返回 字符串变量var 中从第offset 个字符后(不包括第offset 个字符)的字符开始,到最后的部分,offset的 的取值在0 到 到 ${#var}-1 之间(bash4.2 后,允许为负值)

  • ${var:offset:number} :返回 字符串变量var 中从第offset个字符 后(不包括第offset 个字符)的字符开始 ,长度为number 的部分

  • ${var: -length} :取字符串的最右侧几个字符
    注意:冒号后必须有一空白字符

  • ${var:offset:-length} :从最左侧跳过offset 字符,一直向右取到距离最右侧lengh 个字符之前的内容

  • ${var: -length:-offset} :先从最右侧向左取到length 个字符开始,再向右取到距离最右侧offset 个字符之间的内容

字符串处理

  • [x] 基于模式取子串

  • ${var#*word} :其中word 可以是指定的任意字符功能:自左而右,查找var 变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word 字符之间的所有字符

  • ${var##*word} :同上,贪婪模式,不同的是,删除的是字符串开头至最后一次由word 指定的字符之间的所有内容

      示例:
      file="var/log/messages“
      ${file#*/}: log/messages
      ${file##*/}: messages
    
  • ${var%word*} :其中word 可以是指定的任意字符;功能:自右而左,查找var 变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word 字符之间的所有字符;

      例子:
      file="/var/log/messages"
      ${file%/*}: /var/log
    
  • ${var%%word*} :同上,只不过删除字符串最右侧的字符向左至最后一次出现word 字符之间的所有字符;

      示例:
      url=http://www.magedu.com:80
      ${url##*:} 80
      ${url%%:*} http
    

查找替换

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

查找并删除

  • ${var/pattern} :删除var 所表示的字符串中第一次被pattern 匹配到的字符串
  • ${var//pattern} :删除var所表示的字符换中所有被pattern所匹配到的字符串
  • ${var/#pattern} :删除var所表示的字符串中所有以pattern为行首所匹配到的字符串
  • ${var/%pattern} :删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串
  • [x]字符大小写转换
  • ${var^^} :把var 中的所有小写字母转换为大写
  • ${var,,} :把var 中的所有大写字母转换为小写

变量赋值

  • ${var:-value} :如果var 为空或未设置,那么返回value ;否则返回var 的值,可省略:

  • ${var:+value} :如果var 不空,则返回value ,否则返回空值

  • ${var:=value} :如果var 为空或未设置,那么返回value ,并将value 赋值给var ;否则返回var 的值

  • ${var:?error_info} :如果var 为空或未设置,那么在当前终端打印error_info ;否则返回var 的值 为脚本程序使用配置文件, 实现变量赋值
    (1) 定义文本文件,每行定义“name=value”
    (2) 在脚本中source 此文件即可
    高级变量用法- 有类型变量
    Shell 变量一般是无类型的,但是bash Shell 提供了declare和typeset 两个命令用于指定变量的型,两个命令是等价的
    declare [ 选项] 变量名

      -r  声明或显示只读变量
      -i  将变量定义为整型数
      -a  将变量定义为数组
      -A  将变量定义为关联数组
      -f  显示此脚本前定义过的所有函数名及其内容
      -F  仅显示此脚本前定义过的所有函数名
      -x  声明或显示环境变量和函数
      -l  声明变量为小写字母 declare –l var=UPPER
      -u  声明变量为大写字母 declare –u var=lower

你可能感兴趣的:(字符串)