获取变量长度
url="blog.darebeat.cn"
echo ${#url} # 16
截取变量
从末尾指定的位置开始截取字符串,截取后几位字符
echo ${url:0-4} # t.cn
echo ${url: -4} # t.cn
从指定位置开始截取字符串,并且指定截取字符的长度
echo ${url:4:8} # .darebea
echo ${url:0-12:9} # .darebeat
echo ${url: -12:9} # .darebeat
掐头去尾截取
path=https://blog.darebeat.cn/conf.d/my.cnf
# "#*."表示删除字符串中从左向右第一个遇到的 "." ,以及其左侧的字符
echo ${path#*.} # darebeat.cn/conf.d/my.cnf
# "##*."表示删除字符串中从左向右最后一个遇到的 "." ,以及其左侧的字符
echo ${path##*.} # cnf
# "%/*"表示删除字符串中从右向左第一个遇到的 "/" ,以及其右侧的字符
echo ${path%/*} # https://blog.darebeat.cn/conf.d
# "%%/*"表示删除字符串中从右向左最后一个遇到的 "/" ,以及其右侧的字符
echo ${path%%/*} # https:
替换变量中的字符串
path=https://blog.darebeat.net/conf.d/my.cnf
# ${var/old/new} 替换字符串中第一个匹配字符串
echo ${path/.net/.cn} # https://blog.darebeat.cn/conf.d/my.cnf
# ${var//old/new} 替换字符串中所有匹配字符串
echo ${path//./-} # https://blog-darebeat-cn/conf-d/my-cnf
# ${var/#old/new} 针对行首的字符串进行替换
echo ${path/#https/http} # https://blog.darebeat.cn/conf.d/my.cnf
# ${var/%old/new} 针对行尾的字符串进行替换
echo ${path/%cnf/sh} # https://blog.darebeat.cn/conf.d/my.sh
删除变量中的字符串
path=https://blog.darebeat.cn/conf.d/my.cnf
# ${var/old} 删除字符串中第一个匹配字符串
echo ${path/.cn/} # https://blog.darebeat/conf.d/my.cnf
# ${var//old} 删除字符串中所有匹配字符串
echo ${path//.} # https://wwwdarebeatcom/confd/mycnf
# ${var/#old} 针对行首的字符串进行删除
echo ${path/#https} # ://blog.darebeat.cn/conf.d/my.cnf
# ${var/%old} 针对行尾的字符串进行删除
echo ${path/%cnf} # https://blog.darebeat.cn/conf.d/my.
字符串大小写转换
var=$(echo {a..c};echo {D..F})
echo $var # a b c D E F
# ${var^^} 所有字符转化为大写
echo ${var^^} # A B C D E F
# ${var,,} 所有字符转化为小写
echo ${var,,} # a b c d e f
当变量值为空或者非空时对变量进行操作
当变量值为空
# 判断变量为空时,给变量赋值
unset var;[ -z "$var" ] && var="test";echo $var # test
# 对变量进行赋值,并返回变量值
${var:="ls -alF"} # 执行命令
unset var;${var:="ls -alF"};echo $var # 执行命令 # ls -alF
unset var aa;aa=${var:="ls -alF"};echo "var=$var;aa=$aa" # var=ls -alF;aa=ls -alF
# 返回变量值,但不会变量进行赋值
${var:-"ls -alF"} # 执行命令
unset var;var=${var:-"ls -alF"};echo $var # ls -alF
当变量值为非空
# 返回我们指定的值,但是并不会改变变量原来的值
unset var aa;var=123;aa=${var:+"ls -alF"};echo "var=$var;aa=$aa" # var=123;aa=ls -alF
# var变量为空时,输出bash错误
unset var;${var:?"error_info"} # -bash: var: error_info
unset var aa;var=123;aa=${var:?"error_info"};echo "var=$var;aa=$aa" # var=123;aa=123