美文网首页
2-1 Shell字符串处理之${}

2-1 Shell字符串处理之${}

作者: i娟儿 | 来源:发表于2020-02-17 23:54 被阅读0次

符号:${}除了引用变量外,${}还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有要求。

2.1 获取字符串长度

➜  ~ VAR='Hello, world!'
➜  ~ echo $VAR;
Hello, world!
➜  ~ echo ${#VAR}
13
➜  ~

2.2 字符串切片
格式:
${parameter:offset}
${parameter:offset:length}
截取从offset个字符开始,向后length个字符。

#截取hello字符串
➜  ~ VAR='Hello World!'
➜  ~ echo ${VAR:0:5}
Hello
#截取wo字符串
➜  ~ echo ${VAR:6:2}
Wo
#截取World字符串
➜  ~ echo ${VAR:5}
 World!
#截取最后一个字符
➜  ~ echo ${VAR:(-1)}
!
#截取最后2个字符
➜  ~ echo ${VAR:(-2)}
d!
#截取从倒数第3个字符后的2个字符
➜  ~ echo ${VAR:(-3):2}
ld

2.3替换字符
格式:${parameter/pattern/string}

➜  ~ VAR='hello world world!'
#将第1个world替换为WORLD
➜  ~ echo ${VAR/world/WORLD}
hello WORLD world!
#将全部world替换为WORLD
➜  ~ echo ${VAR//world/WORLD}
hello WORLD WORLD!
➜  ~ VAR=123abc
#替换正则匹配为空:
➜  ~ echo ${VAR//[^0-9]/}
123
➜  ~ echo ${VAR//[0-9]/}
abc

patterm 前面开头一个正斜杠为只匹配第一个字符串,两个正斜杠为匹配所有字符。

2.4 字符串截取
格式:
${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
# 去掉左边,最短匹配模式,
##最长匹配模式。
%去掉右边,最短匹配模式,
%%最长匹配模式。

➜  ~ URL="http://www.baidu.com/baike/user.html"
#以//为分割,截取右边字符串
➜  ~ echo ${URL#*//}
www.baidu.com/baike/user.html
#以/为分隔符截取右边字符串
➜  ~ echo ${URL##*/}
user.html
#以//为分隔符截取左边字符串
➜  ~ echo ${URL%%//*}
http:
#以/为分隔符截取左边字符串
➜  ~ echo ${URL%/*}
http://www.baidu.com/baike
#以.为分隔符截取左边
➜  ~ echo ${URL%.*}
http://www.baidu.com/baike/user
#以.为分隔符截取右边
➜  ~ echo ${URL%.*}
http://www.baidu.com/baike/user

2.5 变量状态赋值
${VAR:-string} ${VAR:+string} ${VAR:=string} ${VAR:?string}
如果 VAR 变量为空则返回 string
如果 VAR 变量不为空则返回 string
如果 VAR 变量为空则重新赋值 VAR 变量值为 string 如果 VAR 变量为空则将 string 输出到 stderr

#如果变量为空就返回 hello world!:
➜  ~ VAR=
➜  ~ echo ${VAR:-'hello world!'}
hello world!
#如果变量不为空就返回 hello world!:
➜  ~ VAR="hello"
➜  ~ echo ${VAR:+'hello world!'}
hello world!
#如果变量为空就重新赋值:
➜  ~ VAR=
➜  ~ echo ${VAR:=hello}
hello
➜  ~ echo $VAR
hello
如果变量为空就将信息输出 stderr:
➜  ~ VAR=
➜  ~ echo ${VAR:?value is null}
zsh: VAR: value is null

${}主要用途大概就这么多了,另外还可以获取数组元素,在后面会分享到。

相关文章

  • 2-1 Shell字符串处理之${}

    符号:${}除了引用变量外,${}还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有要求。 2.1 获...

  • Shell脚本基础

    1.Shell变量 2.Shell字符串 3.Shell数组 4.Shell注释 5.Shell参数传递 参数处理...

  • shell编程小知识

    shell正则匹配 shell 字符串操作 内置的shell字符串操作不需要系统调用,不需要上下文切换,处理速度非...

  • 二、变量的高级用法

    一、变量替换 二、字符串处理 字符串处理练习 shell语法 read -p "pls input your ch...

  • 【GeekBand】Week2. 笔记整理

    1. 【OC/2-1】字符串处理 NSString(具有恒定性及共享机制)NSMutableString(可变) ...

  • week(6)shell中字符串的处理

    摘要:shell中字符串的处理 对字符串的处理 包括:截取,连接,匹配,替换,翻转... ... 一天累积一点! ...

  • Linux教程——Shell中字符串与数组操作实例

    Shell中字符串与数组操作实例 前言 本篇主要介绍了介绍在Shell脚本中对于字符串的处理,数据变量的定义与使用...

  • mac 终端常见命令

    切换shell 截取字符串 shell字符串的截取 shell字符串的截取 Shell脚本8种字符串截取方法总...

  • python 字符串学习

    python 字符串的处理,可谓十分强大。是值得花费实际去学习的,作为运维之前使用的shell处理字符串,基本上自...

  • shell 字符串处理

    在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作...

网友评论

      本文标题:2-1 Shell字符串处理之${}

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