Shell字符串处理之${}

1、获取字符串长度

#!/bin/bash
CNBUGS='Hello World!'
echo $CNBUGS
echo ${#CNBUGS}
[root@localhost shell]# bash var.sh 
Hello World!
12

2、字符串切片

#!/bin/bash
CNBUGS="Hello World!"
#截取hello字符串
echo ${CNBUGS:0:5}
#截取最后一个字符
echo ${CNBUGS:(-1)}
#截取从倒数第三个字符后的两个字符
echo ${CNBUGS:(-3):2}
[root@localhost shell]# sh var.sh 
Hello
!
ld

3、替换字符串

#!/bin/bash
CNBUGS="Hello Hello  World!"
#替换Hello为HELLO
echo ${CNBUGS/Hello/HELLO}
#将全部Hello替换为HELLO
echo ${CNBUGS//Hello/HELLO}
#替换正则匹配为空
CNBUGS=123abc
echo ${CNBUGS//[^0-9]}
echo ${CNBUGS//[0-9]/}
HELLO Hello World!
HELLO HELLO World!
123
abc

4、字符串截取

备注:

  • #去掉左边,最短匹配模式
  • ##最长匹配模式
  • %去掉右边,最短匹配模式
  • %%最长匹配模式
#/bin/bash
URL="https://www.cnbugs.com/post-3735.html"
#以//为分隔符截取右边字符串
echo ${URL#*//}
#以/为分隔符截取右边字符串
echo ${URL##*/}
#以//为分隔符截取左边字符串
echo ${URL%%//*}
#以/为分隔符截取左边字符串
echo ${URL%/*}
#以.为分隔符截取左边
echo ${URL%.*}
#以.为分隔符截取右边
echo ${URL##*.}
www.cnbugs.com/post-3735.html
post-3735.html
https:
https://www.cnbugs.com
https://www.cnbugs.com/post-3735
html

5、变量状态赋值

#!/bin/bash
#如果变量为空返回hello world
CNBUGS=
echo ${CNBUGS:-'hello world!'}
#如果变量不为空返回hello woorld
CNBUGS='HELLO'
echo ${CNBUGS:+'hello world!'}
#如果变量为空就重新赋值
CNBUGS=
echo ${CNBUGS:=hello}
echo $CNBUGS
#如果变量为空就将信息输出stderr
CNBUGS=
echo ${CNBUGS:?value is null}
hello world!
hello world!
hello
hello
b.sh:行14: CNBUGS:  value is null

6、字符串颜色

格式

\033[1;31;40m # 1是显示方式,可选。31是字体颜色。40m是字体背景颜色。\033[0m # 恢复终端默认颜色,即取消颜色设置。

#!/bin/bash
#字体颜色
for i in {31..37};do
        echo -e "\033[$i;40mHelloworld!\033[0m"
done
#背景颜色
for i in {41..47};do 
        echo -e "\033[47;${i}mHelloworld!\033[0m"
done
#显示方式
for i in {1..8};do
        echo -e "\033[$i;31;40mHelloworld!\033[0m"
done

发表评论

后才能评论