SHELL命令-字符串操作


获取变量长度

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

文章作者: darebeat
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 darebeat !
 上一篇
写代码水平的几个发展阶段 写代码水平的几个发展阶段
开始学习编程或学习一种新技术的时候,会有种雾里看花的感觉,似懂非懂,就算记住了也不会用。要突破这个阶段的方法就是“练习”,通过各种项目让自己熟练起来,做到任何一个不太难的业务需求可以快速想到解决方案并且开始动手实现。
2018-03-22
下一篇 
R语言基础知识 R语言基础知识
R语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。
2014-11-15
  目录